sunkaidong 发表于 2008-2-20 15:35

我也来写贪吃蛇

最近两个月,自己看了下mfc.为了练习学到的东西,同时看别人都那么厉害...写下了下面乱的代码...觉得还是很有收获的...给朋友分享..

xianshizhe111 发表于 2008-2-20 15:46

好不错有创意.
顶顶顶.

sunkaidong 发表于 2008-2-20 15:51

谢谢楼上兄弟啊.呵呵,其实是在复习书本知识呢.虽然很小,也涉及消息映射,线程,其它的都是基本的东西,写的急了,都没用标注和英语做变量名和函数名,结构也不是很好...

hughyjy 发表于 2008-3-9 12:42

回复 1# 的帖子

说实话,你的这个程序些的不太好,有很多比较严重的bug,我下载下来试玩,按了几下键就发现了好几个。我也写过贪吃蛇。这些问题我都想到了。你设计算法的时候考虑的不够周到。建议在好好检查一些然后在发上来。

sunkaidong 发表于 2008-3-9 12:50

谢谢你的建议..那是以前我学mfc的时候写的...你最好自己运行一下原文件...你可以把bug贴出来....我看看是怎么回事....

余来 发表于 2008-3-9 14:50

没别的,只是屏幕有点闪烁,再就是键盘消息响应不及时,推荐用
局部刷新解决闪烁现象InvalidateRect
采用SetTimer+GetKeyState来获取键盘按键状态提供及时性

随心 发表于 2008-3-9 14:53

在OnPaint里面画是有点占用资源,每更新一点点就要更新整个屏幕。

sunkaidong 发表于 2008-3-9 15:07

是啊...呵呵可是不更新它画面就有问题了..谢谢兄弟啊

flyue 发表于 2008-3-9 17:36

写游戏的绝配是Win32工程+DirectX(或OpenGL)
我下了你的程序,发现用Release配置生成的程序会发生错误。
这是有错误的程序:
[attach]32847[/attach]

sunkaidong 发表于 2008-3-9 17:42

这是我一直疑惑的问题..谢谢楼上...最近要去考试没时间改.....我用vc++6.0release就没正确过....

flyue 发表于 2008-3-9 20:46

可能是你有什么地方内存泄露了,或者有下标越界,或者用了new
没有正确的用delete或delete[]  <--这个很麻烦,有时都不知道用哪个
一般就是这些问题。我写了一个游戏引擎,就是这样一步一步修正错误的。

flyue 发表于 2008-3-9 21:00

嘿嘿,我帮你改了一下,不会有错误了~o~
[attach]32864[/attach]

void CMysdiView::OnTimer(UINT nIDEvent)
{
        // TODO: Add your message handler code here and/or call default
//        SendMessage(WM_MYMESSAGE);//为什么不直接调用函数?搞消息多麻烦?
        OnMyMessage();//直接调用就不会错了
        CView::OnTimer(nIDEvent);
}

// Attributes
public:
        CMysdiDoc* GetDocument();
        HICON hDocIcon;
        int j;
        int i;
        int mark;
        int sklen;
        struct position
        {
        int        skx;
    int sky;
        }p[10000],remb[10000],randPt,rem[5000];//我直接加了个0,想越界都难!~O~
        int con;

flyue 发表于 2008-3-9 21:04

总之你的游戏做的还是不错的,但是代码比较乱,我看了好久才弄明白,不过用Win32看起来可能会更直观。
代码前面的空格可以按Tab键来空。
按Alt+F8可以对齐选定的代码。

sunkaidong 发表于 2008-3-9 22:39

呵呵.谢谢你啊..其实我是纯粹用来写着玩的..当时觉得要把学到的东西全部复习啊....

lewyond1 发表于 2008-7-6 14:53

学习

楚天 发表于 2008-7-7 11:40

用SETTIMER做定时器在用双缓存的办法

well丶sky 发表于 2008-7-7 12:13

太厉害了,我完全看不懂。。。怎么办啊

页: [1]

编程论坛