鱼C论坛

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

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

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

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

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

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

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

001

001

想知道小甲鱼最近在做啥?请访问 -> 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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

1-1

1-1

1-2

1-2

大家看看效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-20 19:35:51 | 显示全部楼层
操作说明:
1-3.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

class e
{
    o *p;
    int total,*statu;
    char *name;
    public:
    e():p(NULL),total(0),name("none"),statu(0){};
   ~e(){ delete [] p,statu; };
   
    e(int,o&o,char*);
    
};
e:: e(int sum,o&oi,char*n):total(sum),name(n)
{
    p = new o [ sum ];
    
    statu=new int [sum];
    
    for(int i=0;i<sum;i++)
    {
        p[i] = oi;
        statu[i]=0;
    }
    
    
    outtextxy(0,10,"测试摆出");
    
    for(int i=0;i<sum;i++)
    {
        if(p[i].init(i*12,100))
        {
            cout<<name<<" "<<i<<" 已初始化完成 statu="<<statu[i]<<endl;
        }
    }
    
    cout<<name<<" "<<sum<<" 已初始化完成"<<endl;
}




int main(int argc, char *argv[])
{
    initwindow(800,600,"OO图形化教程",600,100);
    
    o ball(5,WHITE);
//    o b(ball);
//    o c;
//    c=ball;
//    
//    o block(50,22,2);
//    o bl(block);
//    o blo;
//    blo = block;
//    
//    ball.init(200,100);
//    b.init(200,120);
//    c.init(200,140);
//    
//    block.init(300,100);
//    bl.init(300,200);
//    blo.init(300,300);
    
    e a(5,ball,"balls");
    
    
    
    
    getch();
    //system("PAUSE");
    return EXIT_SUCCESS;
}







/*







*/
o:: o(char r,char C):left(0),top(0),l(r+r),w(r+r),c(C)
{
    setcolor(c);
    circle(r,r,r);
    setfillstyle(1,c);
    floodfill(r,r,c);
    size=imagesize(left,top,left+l,top+w);
    p = new int [size];
    getimage(left,top,l,w,p);
    cleardevice();
    setcolor(WHITE);
}
o:: o(char L,char W,char c):left(0),top(0),l(L),w(W),c(c)
{
    setcolor(c);
    rectangle(left,top,l,w);
    setfillstyle(1,c);
    floodfill(1,1,c);
    size=imagesize(left,top,left+l,top+w);
    p = new int [size];
    getimage(left,top,l,w,p);
    getch();
    cleardevice();
    setcolor(WHITE);
}
o:: o(const o&o):size(o.size),left(o.left),top(o.top),l(o.l),w(o.w),c(o.c)
{
    delete [] p;
    p = new int [size];
    
    memcpy(p,o.p,size);
    
    cout<<"复制 内存大小: "<<size<<"\n原地址: "<<o.p
    <<"\n新地址: "<<p<<endl<<endl;
}
void o:: operator =(const o&o)
{
    delete [] p; 
    size = o.size;
    left = o.left;
    top  = o.top;
    l    = o.l;
    w    = o.w;
    c    = o.c;
    
    p    = new int [size];
    
    memcpy(p,o.p,size);
    
    cout<<"赋值 内存大小: "<<size<<"\n原地址: "<<o.p
    <<"\n新地址: "<<p<<endl<<endl;
}
bool o:: init(int x, int y)
{
    left = x;
    top  = y;
    putimage(left,top,p,1);
    cout<< p<<endl;
    return true;
}
/*







*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 06:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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