鱼C论坛

 找回密码
 立即注册
查看: 1365|回复: 5

[技术交流] 001--- c语言小游戏简易编码 内存概念

[复制链接]
发表于 2020-4-20 18:56:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 howzyao 于 2020-4-20 20:24 编辑

流览c\c++版块有几天了,我看过大家发的关于内存方面的知识,对此触动很大,
我也是新手,认识有限,现将自己摸索到的已知的学习成果发给大家批评指正,
以供大家一起学习.希望借以有图为证的输出,来表达内存中的数据到底是个什么概念,
后续再编辑,想到什么再说...
话不多说,图先上:

001

001

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-20 18:57:05 | 显示全部楼层
本帖最后由 howzyao 于 2020-4-20 19:38 编辑

学习附件,我也放上,大家可以使用.



使用了头文件后,还需要在"链接器设置" 中,写入以下参数:
-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32

graphics头和库.zip

50.13 KB, 阅读权限: 15, 下载次数: 0

售价: 5 鱼币  [记录]  [购买]

物有所值 简单学习oo

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-20 19:13:08 | 显示全部楼层
020-END.zip (480.47 KB, 下载次数: 0, 售价: 5 鱼币)
可以解压后试玩.欢迎拍砖,共同学习.

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-20 19:15:53 | 显示全部楼层

1-1

1-1

1-2

1-2

大家看看效果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-20 19:35:51 | 显示全部楼层
操作说明:
1-3.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-20 19:50:31 | 显示全部楼层
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <graphics.h>
  4. using namespace std;
  5. void usage()
  6. {
  7.     int x = textheight("1")+100;
  8.     int y = textwidth ("1")+20;
  9.     //void settextstyle(int font, int direction, int charsize);
  10.    
  11.     settextstyle(0,0,0);
  12.     setcolor(LIGHTGREEN);
  13.     outtextxy(x,y  ,"吃到红块    按左键打字弹");
  14.     outtextxy(x,y*2,"吃到黄块    减短拍子");
  15.     outtextxy(x,y*3,"吃到蓝块    加长拍子");
  16.     outtextxy(x,y*4,"吃到绿块    拍子粘球,右键再次发球");
  17.     outtextxy(x,y*5,"吃到蓝块    球数翻倍 (初始化不发射有bug)");
  18.     outtextxy(x,y*7,"规则  球不能掉到屏幕下方去 但这在测试");
  19.     outtextxy(x,y*8,"依靠鼠标在游戏窗口中左右来控制拍子来回移动 右键发球");
  20.     outtextxy(x,y*9,"--- 按任意键开始  ---2020.04.20");
  21.     setcolor(WHITE);
  22.     getch();
  23. }
  24. class o
  25. {
  26.     int *p,size,left,top,l,w,c;
  27.     public:
  28.     o():p(NULL),size(0),left(0),top(0),l(0),w(0),c(0){};
  29.    ~o(){ delete [] p; };
  30.    
  31.     o(char,char);
  32.     o(char,char,char);
  33.    
  34.     o(const o&);
  35.     void operator =(const o&);
  36.    
  37.     bool init(int,int);
  38. };

  39. class e
  40. {
  41.     o *p;
  42.     int total,*statu;
  43.     char *name;
  44.     public:
  45.     e():p(NULL),total(0),name("none"),statu(0){};
  46.    ~e(){ delete [] p,statu; };
  47.    
  48.     e(int,o&o,char*);
  49.    
  50. };
  51. e:: e(int sum,o&oi,char*n):total(sum),name(n)
  52. {
  53.     p = new o [ sum ];
  54.    
  55.     statu=new int [sum];
  56.    
  57.     for(int i=0;i<sum;i++)
  58.     {
  59.         p[i] = oi;
  60.         statu[i]=0;
  61.     }
  62.    
  63.    
  64.     outtextxy(0,10,"测试摆出");
  65.    
  66.     for(int i=0;i<sum;i++)
  67.     {
  68.         if(p[i].init(i*12,100))
  69.         {
  70.             cout<<name<<" "<<i<<" 已初始化完成 statu="<<statu[i]<<endl;
  71.         }
  72.     }
  73.    
  74.     cout<<name<<" "<<sum<<" 已初始化完成"<<endl;
  75. }




  76. int main(int argc, char *argv[])
  77. {
  78.     initwindow(800,600,"OO图形化教程",600,100);
  79.    
  80.     o ball(5,WHITE);
  81. //    o b(ball);
  82. //    o c;
  83. //    c=ball;
  84. //   
  85. //    o block(50,22,2);
  86. //    o bl(block);
  87. //    o blo;
  88. //    blo = block;
  89. //   
  90. //    ball.init(200,100);
  91. //    b.init(200,120);
  92. //    c.init(200,140);
  93. //   
  94. //    block.init(300,100);
  95. //    bl.init(300,200);
  96. //    blo.init(300,300);
  97.    
  98.     e a(5,ball,"balls");
  99.    
  100.    
  101.    
  102.    
  103.     getch();
  104.     //system("PAUSE");
  105.     return EXIT_SUCCESS;
  106. }







  107. /*







  108. */
  109. o:: o(char r,char C):left(0),top(0),l(r+r),w(r+r),c(C)
  110. {
  111.     setcolor(c);
  112.     circle(r,r,r);
  113.     setfillstyle(1,c);
  114.     floodfill(r,r,c);
  115.     size=imagesize(left,top,left+l,top+w);
  116.     p = new int [size];
  117.     getimage(left,top,l,w,p);
  118.     cleardevice();
  119.     setcolor(WHITE);
  120. }
  121. o:: o(char L,char W,char c):left(0),top(0),l(L),w(W),c(c)
  122. {
  123.     setcolor(c);
  124.     rectangle(left,top,l,w);
  125.     setfillstyle(1,c);
  126.     floodfill(1,1,c);
  127.     size=imagesize(left,top,left+l,top+w);
  128.     p = new int [size];
  129.     getimage(left,top,l,w,p);
  130.     getch();
  131.     cleardevice();
  132.     setcolor(WHITE);
  133. }
  134. o:: o(const o&o):size(o.size),left(o.left),top(o.top),l(o.l),w(o.w),c(o.c)
  135. {
  136.     delete [] p;
  137.     p = new int [size];
  138.    
  139.     memcpy(p,o.p,size);
  140.    
  141.     cout<<"复制 内存大小: "<<size<<"\n原地址: "<<o.p
  142.     <<"\n新地址: "<<p<<endl<<endl;
  143. }
  144. void o:: operator =(const o&o)
  145. {
  146.     delete [] p;
  147.     size = o.size;
  148.     left = o.left;
  149.     top  = o.top;
  150.     l    = o.l;
  151.     w    = o.w;
  152.     c    = o.c;
  153.    
  154.     p    = new int [size];
  155.    
  156.     memcpy(p,o.p,size);
  157.    
  158.     cout<<"赋值 内存大小: "<<size<<"\n原地址: "<<o.p
  159.     <<"\n新地址: "<<p<<endl<<endl;
  160. }
  161. bool o:: init(int x, int y)
  162. {
  163.     left = x;
  164.     top  = y;
  165.     putimage(left,top,p,1);
  166.     cout<< p<<endl;
  167.     return true;
  168. }
  169. /*







  170. */
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-12 12:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表