我也来写贪吃蛇
最近两个月,自己看了下mfc.为了练习学到的东西,同时看别人都那么厉害...写下了下面乱的代码...觉得还是很有收获的...给朋友分享..顶顶顶. 谢谢楼上兄弟啊.呵呵,其实是在复习书本知识呢.虽然很小,也涉及消息映射,线程,其它的都是基本的东西,写的急了,都没用标注和英语做变量名和函数名,结构也不是很好...
回复 1# 的帖子
说实话,你的这个程序些的不太好,有很多比较严重的bug,我下载下来试玩,按了几下键就发现了好几个。我也写过贪吃蛇。这些问题我都想到了。你设计算法的时候考虑的不够周到。建议在好好检查一些然后在发上来。 谢谢你的建议..那是以前我学mfc的时候写的...你最好自己运行一下原文件...你可以把bug贴出来....我看看是怎么回事.... 没别的,只是屏幕有点闪烁,再就是键盘消息响应不及时,推荐用局部刷新解决闪烁现象InvalidateRect
采用SetTimer+GetKeyState来获取键盘按键状态提供及时性 在OnPaint里面画是有点占用资源,每更新一点点就要更新整个屏幕。 是啊...呵呵可是不更新它画面就有问题了..谢谢兄弟啊 写游戏的绝配是Win32工程+DirectX(或OpenGL)
我下了你的程序,发现用Release配置生成的程序会发生错误。
这是有错误的程序:
[attach]32847[/attach] 这是我一直疑惑的问题..谢谢楼上...最近要去考试没时间改.....我用vc++6.0release就没正确过.... 可能是你有什么地方内存泄露了,或者有下标越界,或者用了new
没有正确的用delete或delete[] <--这个很麻烦,有时都不知道用哪个
一般就是这些问题。我写了一个游戏引擎,就是这样一步一步修正错误的。 嘿嘿,我帮你改了一下,不会有错误了~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; 总之你的游戏做的还是不错的,但是代码比较乱,我看了好久才弄明白,不过用Win32看起来可能会更直观。
代码前面的空格可以按Tab键来空。
按Alt+F8可以对齐选定的代码。 呵呵.谢谢你啊..其实我是纯粹用来写着玩的..当时觉得要把学到的东西全部复习啊.... 学习 用SETTIMER做定时器在用双缓存的办法 太厉害了,我完全看不懂。。。怎么办啊
页:
[1]
