问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于贪食蛇 C++2

发布网友 发布时间:2023-09-21 04:24

我来回答

4个回答

热心网友 时间:2024-10-20 18:39

纯{MFC}贪吃蛇(豆子和蛇都会,变色,边速度)

182行代码

#include<afxwin.h>
#include<time.h>
#include<stdlib.h>
class CMainWnd:public CFrameWnd{
public:
CMainWnd():uAddX(0),uAddY(0),lpptSNK(NULL),uSNKLong(0),ptBEA(5,5),
Eat(false),SNKPace(500),BEAPace(4000){
Create(NULL,"show",WS_OVERLAPPED|WS_SYSMENU|WS_CAPTION,
CRect(0,0,408,465),NULL,NULL,WS_EX_OVERLAPPEDWINDOW);
}
void OnPaint();
void OnChar(UINT,UINT,UINT);
void OnTimer(UINT);
int OnCreate(LPCREATESTRUCT);
void OnClose();
protected:
void SNKMove();
void CreateBEA();
bool Wrap(CPoint);
void Start();
int uAddX;
int uAddY;
bool Eat;
UINT SNKPace;
UINT BEAPace;
CPoint ptBEA;
CBrush **lpMapBrush;
UINT uSNKLong;
CPoint *lpptSNK;
DECLARE_MESSAGE_MAP();
};
BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
ON_WM_CREATE()
ON_WM_CLOSE()
ON_WM_PAINT()
ON_WM_CHAR()
ON_WM_TIMER()
END_MESSAGE_MAP()
class CWinMain:public CWinApp{
public:
virtual BOOL InitInstance(){
m_pMainWnd=new CMainWnd;
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
m_pMainWnd->SetTimer(1,500,NULL);
m_pMainWnd->SetTimer(2,8000,NULL);
return TRUE;
}
}theMain;
void CMainWnd::OnPaint(){
CDC *pDC=this->GetDC();
pDC->Rectangle(0,0,400,430);
pDC->Rectangle(0,0,400,400);
char cBuffer[100];
sprintf(cBuffer,"蛇的长度是:%d,蛇的速度是:%d,豆的出现速度是:%d ",
uSNKLong,500-SNKPace,8000-BEAPace);
pDC->TextOut(20,400,cBuffer);
for(UINT i=0;i<uSNKLong;i++){
pDC->SelectObject(*(lpMapBrush+(lpptSNK+i)->x)+(lpptSNK+i)->y);
pDC->Rectangle((lpptSNK+i)->x*20,(lpptSNK+i)->y*20,
(lpptSNK+i)->x*20+20,(lpptSNK+i)->y*20+20);
}
if(!Eat){
pDC->SelectObject(*(lpMapBrush+ptBEA.x)+ptBEA.y);
pDC->Ellipse(ptBEA.x*20,ptBEA.y*20,
ptBEA.x*20+20,ptBEA.y*20+20);
}
pDC->ReleaseAttribDC();
ValidateRect(NULL);
}
void CMainWnd::OnTimer(UINT uID){
if(uID==1)
SNKMove();
else if(uID==2)
CreateBEA();
}
void CMainWnd::OnChar(UINT nChar,UINT,UINT){
if(nChar=='w'){
uAddX=0;
if(!uAddY)uAddY=-1;
}
else if(nChar=='s'){
uAddX=0;
if(!uAddY)uAddY=1;
}
else if(nChar=='a'){
if(!uAddX)uAddX=-1;
uAddY=0;
}
else if(nChar=='d'){
if(!uAddX)uAddX=1;
uAddY=0;
}
}
int CMainWnd::OnCreate(LPCREATESTRUCT){
lpMapBrush=new CBrush*[20];
for(int i=0;i<20;i++){
*(lpMapBrush+i)=new CBrush[20];
for(int j=0;j<20;j++)
(*(lpMapBrush+i)+j)->
CreateSolidBrush(RGB(50+i*10-j*8,50+i*10,255-j*10));
}
Start();
return 1;
}
void CMainWnd::OnClose(){
if(lpptSNK)
delete[]lpptSNK;
for(int i=0;i<20;i++)
delete[]*(lpMapBrush+i);
delete[]lpMapBrush;
DestroyWindow();
}
void CMainWnd::Start(){
if(lpptSNK)
delete[]lpptSNK;
lpptSNK=new CPoint[6];
uAddX=0;
uAddY=0;
SNKPace=500;
BEAPace=8000;
SetTimer(1,SNKPace,NULL);
SetTimer(2,BEAPace,NULL);
uSNKLong=6;
for(int i=1;i<=6;i++)
*(lpptSNK+i-1)=CPoint(6-i,0);
InvalidateRect(NULL);
}
bool CMainWnd::Wrap(CPoint pt){
for(UINT i=0;i<uSNKLong;i++)
if(pt==*(lpptSNK+i))
return true;
return false;
}
void CMainWnd::SNKMove(){
if(!uAddX&&!uAddY)return;
if(uAddX+lpptSNK->x<0||uAddX+lpptSNK->x>=20||
uAddX+lpptSNK->y<0||uAddX+lpptSNK->y>=20||
Wrap(CPoint(lpptSNK->x+uAddX,lpptSNK->y+uAddY))){
if(IDOK==MessageBox("GameOver"))Start();
}
else if(uAddX||uAddY){
CPoint ptBuffer=*(lpptSNK),ptBuffer2;
*(lpptSNK)+=CPoint(uAddX,uAddY);
for(UINT i=1;i<uSNKLong;i++){
ptBuffer2=*(lpptSNK+i);
*(lpptSNK+i)=ptBuffer;
ptBuffer=ptBuffer2;
}
if(!Eat)
if(*(lpptSNK)==ptBEA){
Eat=true;
uSNKLong+=1;
CPoint *lpptOldSNK=lpptSNK;
lpptSNK=new CPoint[uSNKLong];
*(lpptSNK+uSNKLong-1)=ptBuffer;
for(UINT j=0;j<uSNKLong-1;j++)
*(lpptSNK+j)=*(lpptOldSNK+j);
SNKPace-=10;
BEAPace-=50;
if(uSNKLong>=20)
if(MessageBox("完成游戏!")==IDOK)Start();
SetTimer(1,SNKPace,NULL);
SetTimer(2,BEAPace,NULL);
}
}
InvalidateRect(NULL);
}
void CMainWnd::CreateBEA(){
srand((unsigned)time(0));
CPoint ptBuffer;
for(int i=0;i<10;i++){
ptBuffer.x=rand()%20;
ptBuffer.y=rand()%20;
if(!Wrap(ptBuffer)){
ptBEA=ptBuffer;
Eat=false;
break;
}
}
InvalidateRect(NULL);
}

参考资料:http://tieba.baidu.com/f?kz=436243253

热心网友 时间:2024-10-20 18:39

你先想一下你的贪吃蛇是如何移动的,比如一出生时他是一块方块,然后走着走着碰到了第二块方块,于是就变成两块方块一起移动,依次这样下去蛇越来越长了。因为吃下去的方块是连在一起的,也就是说当前第一个方块所在的位置将成为第二个方块在下一个时刻所在的位置,依次类推,这样蛇看上去就是连在一起的在移动了。接下来你只要用代码把上面的思路表示出来就行了,我以前就是靠这个思路用D3D写了一个贪吃蛇,希望这段思路能对你有帮助。

热心网友 时间:2024-10-20 18:40

从基础做起...循序渐进才能学好MFC,,到时贪食蛇不是不在话下?

热心网友 时间:2024-10-20 18:41

我有C 语言的代友和思路,不知有用否?
可以的话加我.
c语言 贪吃蛇 程序

include &lt;conio.h&gt; include &lt;windows.h&gt; define BEG_X2 define BEG_Y1 define WID20 define HEI20 HANDLE hout;typedef enum {UP, DOWN, LEFT, RIGHT} DIR;typedef struct Snake_body { COORD pos;//蛇身的位置 struct Snake_body *next;//下一个蛇身 struct Snake_body *prev;//前一个蛇...

求用c语言编写的贪吃蛇程序

C语言实现的简单贪吃蛇程序 以下是一个基本的贪吃蛇程序的C语言代码示例。请注意,这是一个非常简单的实现,主要用于展示贪吃蛇游戏的核心逻辑,界面和更多功能可能需要进一步开发和完善。c include include include // 用于延时和获取键盘状态 include // 用于设置颜色和清屏 // 定义蛇的部分结构 typedef...

求c语言的贪吃蛇的代码 能运行的

void gotoxy(int x, int y)

用c语言写贪吃蛇

/*蛇的第二节位置*/snake.node=3;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()%360+70;food.y=rand()%250+60;while(food.x%10!=0)/*...

C语言课程设计,贪吃蛇应该怎么做?

for(i=snake.node-1;i&gt;0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ { snake.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction) { case 1:snake.x[0]+=10;break; case 2: snake....

c语言贪吃蛇的速度控制程序怎么编

for(i=snake.node-1;i&gt;0;i--) /*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/ { snake.x[i] = snake.x[i-1]; snake.y[i] = snake.y[i-1]; } /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction) { case 1: snake.x[0] += 10; break; case...

贪吃蛇,c语言,数据结构?

按照题目要求编写的程序如下(见图,图中有重复的地方只需写一次,中间有一行重复)

C语言贪吃蛇游戏代码

实现贪吃蛇游戏,用户通过键盘操控蛇体,遵循规则移动。游戏画面直观,蛇体碰触自身或窗口边缘判定失败,吃到食物则增长。游戏框架设计利用全局变量与函数,地图构建与蛇体动作实现依靠二维数组。时间控制通过静态变量优化。游戏结束与食物获取,实现蛇体增长功能。代码涉及二维数组、if-else、scanf、局部变量与...

关于贪吃蛇两条蛇的运动

第一旋转:第一,食物,二,蛇不停地移动,第三步是检查蛇打自己或墙壁,加紧从第四场比赛有两个分支(A,B): &gt;:第四步,蛇并没有触摸自己或墙壁,蛇去提前和画蛇的运动;第五步,以确定是否蛇到吃的食物,如果蛇到吃的食物,身体变得很长,在原始食物消失;第六步骤中,播放器输入的控制命令,使蛇第七步骤中,第二...

求贪吃蛇C语言代码,有一定功能要求

以下是代码 /* 贪吃蛇程序 by champking */#define N 200#include &lt;graphics.h&gt;#include &lt;stdlib.h&gt;#include &lt;dos.h&gt;#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score = 0;/*得分*/int gamespeed = 100000;/*游戏...

贪吃蛇贪食蛇大作战 贪食蛇贪吃蛇新玩法 疯狂贪食蛇 贪食蛇是什么意思 不一样的贪食蛇 小涛鬼话贪吃蛇 贪吃蛇大战 贪吃蛇怎么玩 贪吃蛇旧版
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求这张图片的画师和p站ID 贱人是碰不完的,有些人说遇到贱人打死他,可没有几个能那样的人吧 魅族16相机启动异常 除青春痘小妙招 青春痘怎么治好 ...就长了青春痘,可能是因为我经常吃油炸的,比如薯条、鸡翅等热气的东西... 游戏私服是什么意思 湖北省武昌儿童医院怎么走 王者荣耀版本更新后信誉积分会恢复吗 如果一个游戏出了私服,那以前的官服 会面临停服问题吗? 私服的游戏和官服的有什么差别啊,是自己改吗?私服上的玩家数据谁来维护... 面对没事找事的上司该怎么办???2 招行小白卡好申请吗? 有谁知道易水河,狼牙山在哪??3 ...从他的陌陌里删除了,扣扣,微信里没有删除,为什么? 电视里出现not order this program怎么回...1 中深花园地铁哪个出口 已经25岁了,还没有谈过恋爱,应该怎么办?27 上司的竞争对手以及他的部下(和我同级)老是找我做事怎么办?急... 谁能告诉我,当你上司总没事找你毛病,该怎么办?今天让你这么做... 上司强迫你做这些事,该怎么办? 巍巍狼牙山,滔滔易水河什么意思4 请问净易净水器的单兵净水器是什么原理?如题 谢谢了2 腾讯视频,优酷,乐视哪个好 “我需要更多的力量,请魔人赐给我更多更强的力量” 英文该怎么...1 求C语言大神贪吃蛇开始界面程序代码C++程序2 手机上老弹出乐视推送的腾讯视频软件下载,可疑吗1 ...一个星期了,他把我的QQ删除了,没有删除我的微信。我给他留言他也不... 卫生系统属于党委系统还是政府系统?3 手机进水屏幕花了会自己好吗 求大神分析一下天下手游战场套的冰心? 自己编了一个C++贪吃蛇,出现了一些小bug,求解决方式1 c++写的双链表的贪吃蛇,还没写完,现在只要移动时同时按多个...1 洗衣机一天用多少度电? 在结婚后,究竟怎么样和婆婆搞好关系呢? 刚进入婆婆家,该不该表现得很卑微,委曲求全地讨好婆婆呢? 净易净水器和suniwater净水器哪个好啊3 柔软的心灵容天下是什么意思 我求助党政府快救一救我吧,我都快冻死了,我求助各级市领导和残... 数字电视屏幕中间有个对话框消不掉 上面显示not order...23 数字电视出现not order this program 关...6 数字电视屏幕上有一行字母下不去为什么1 数字电视出现program unauthorization是...1 notorderthisprog ram翻译成 ...want to break free》在那下载?谢谢了,大神帮忙啊 哪个视频软件最好,百度视频,乐视视频,优酷视频,爱奇艺,搜狐... 男生以前很喜欢我的,现在却把我的微信拉黑,QQ删除了,唯独电话号码没有拉... 在结婚后,该如何和婆婆和谐相处? 步步高学习机怎么下载音乐啊?谢谢了,大神帮忙啊 sql数据库连接出现未指定的错误 LG W1934S型号显示器 出现了OSD锁定解锁 怎么解决...