您的位置:广东在线游戏网 > 游戏策略 > 急求C语言程序设计—贪吃蛇的总结·!! 不知道怎么写-急急急!!!新版贪吃蛇(C语言程序设计)

急求C语言程序设计—贪吃蛇的总结·!! 不知道怎么写-急急急!!!新版贪吃蛇(C语言程序设计)

作者:广东在线游戏网日期:

返回目录:游戏策略




C++ #include <iostream> using namespace std; char num[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; int ToInt(char &n){ if (n<='9') return (int )(n-48); else return (int )(n-'A'+10); } int main(){ int P = 10, Q; \\Q是要2 8 16进制 string N = ""; while (cin >> Q >> N){ if (N == "0"){ cout << 0 << endl; return 0; } string OUT = ""; long long sum = 0, p = 1; for (int i = 0; i<N.size(); i++){ sum += ToInt(N[N.size()-1-i])*p; p*=P; } while (sum>0) OUT.insert(0, 1, num[sum%Q]), sum/=Q; cout << OUT << endl; } return 0;


#define N 200
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;/*得分*/
int gamespeed=50000;/*游戏速度自己调整*/
struct Food
{
int x;/*食物的横坐标*/
int y;/*食物的纵坐标*/
int yes;/*判断是否要出现食物的变量*/
}food;/*食物的结构体*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的节数*/
int direction;/*蛇移动方向*/
int life;/* 蛇的生命,0活着,1死亡*/
}snake;
void Init(void);/*图形驱动*/
void Close(void);/*图形结束*/
void DrawK(void);/*开始画面*/
void GameOver(void);/*结束游戏*/
void GamePlay(void);/*玩游戏具体过程*/
void PrScore(void);/*输出成绩*/
/*主函数*/
void main(void)
{
Init();/*图形驱动*/
DrawK();/*开始画面*/
GamePlay();/*玩游戏具体过程*/
Close();/*图形结束*/
}
/*图形驱动*/
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}
/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/
void DrawK(void)
{
/*setbkcolor(LIGHTGREEN);*/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/
for(i=50;i<=600;i+=10)/*画围墙*/
{
rectangle(i,40,i+10,49); /*上边*/
rectangle(i,451,i+10,460);/*下边*/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10); /*左边*/
rectangle(601,i,610,i+10);/*右边*/
}
}
/*玩游戏具体过程*/
/*第一部分初始设定*/
void GamePlay(void)
{
randomize();/*随机数发生器*/
food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/
snake.life=0;/*活着*/
snake.direction=1;/*方向往右*/
snake.x[0]=100;snake.y[0]=100;/*蛇头*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*节数*/
PrScore();/*输出得分*/
while(1)/*可以重复玩游戏,压ESC键结束*/
{
while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/
{
if(food.yes==1)/*需要出现新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/
food.x++;
while(food.y%10!=0)/*食物整个坐标大小 需要符合10*10的大小否则社无法迟到*/
food.y++;
food.yes=0;/*画面上有食物了*/
}
if(food.yes==0)/*画面上有食物了就要显示*/
{
setcolor(GREEN); /*设置食物颜色*/
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>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.x[0]-=10;break;
case 3: snake.y[0]-=10;break;
case 4: snake.y[0]+=10;break;
}
/*第二部分:死亡设定模块*/
for(i=3;i<snake.node;i++)/*死亡条件一:从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();/*显示失败*/
snake.life=1;
break;
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||
snake.y[0]>455)/*死亡条件二:蛇是否撞到墙壁*/
{
GameOver();/*本次游戏结束*/
snake.life=1; /*蛇死*/
}
if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/
break;
/*第三部分:食物设定模块*/
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/
{
setcolor(0);/*把画面上的食物东西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新的7a64e4b893e5b19e339一节先放在看不见的位置,下次循环就取前一节的位置*/
snake.node++;/*蛇的身体长一节*/
food.yes=1;/*画面上需要出现新的食物*/
score+=10;
PrScore();/*输出新得分*/
}
/*第四部分:死亡后返回初始设定(或是退出开始新游戏)*/
setcolor(4);/*画出蛇*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed);
setcolor(0);/*用黑色去除蛇的的最后一节*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
} /*endwhile(!kbhit)*/
if(snake.life==1)/*如果蛇死就跳出循环*/
break;
key=bioskey(0);/*接收按键*/
if(key==ESC)/*按ESC键退出*/
break;
/*判断是否往相反的方向移动(向相反方向移动会死亡)第三类死亡条件*/
else
if(key==UP&&snake.direction!=4)
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}/*endwhile(1)*/
}
/*第五部分:游戏结束*/
void GameOver(void)
{
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}
/*第六部分:输出成绩*/
void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}
/*第七部分:结束图形*/
void Close(void)
{
getch();
closegraph();
}

我们课程设计正在做这个游戏,这是我的答案,不知道对你有没有用

相关阅读

关键词不能为空

标签导航

NDS心跳回忆女生版 初恋 点开EMAIL看详情后该怎么返回... 心跳回忆女生版·初恋中NDS的新增隐藏可攻略人物是谁 nds《心跳回忆女生版初恋》打工的地方怎么拿号码?详细地说!... NDS心跳回忆女生版 初恋 要怎么打工? 七色星露是讲什么的 七色星露 有什么好看的漫画么 有什么好看的动漫介绍? s6天赋怎么点 LOLS6天赋加点图 LOLS6天赋·怎么加点 新天赋系统加点方法 LOLS6天赋怎么加点 史上最全天赋加点教程与方 LOL天赋加点大全S6 新版本天赋图怎么配 谁能告诉我混乱军团 那个魔魂在哪吗? 混乱军团魔魂最多装备两个啊? 混乱军团(混乱军势)里最强召唤兽的最终形态是什么样的? 混乱军团中一上来给的那个死亡魔魂是最终形态吗? 剑网3冰心七秀内攻会心要求要多少?会心效果要达到多少? 剑网3的少林有个技能是有个佛的罩子一样的 是什么技能 有什么... 剑网三七秀输出技能有哪些? 剑网三奶秀解控技能有哪些 lol宝石骑士出装和攻略 英雄联盟宝石骑士出装! 求LOL宝石骑士出装顺序、加点顺序、总之就是有关宝石的功略吧... LOL无限火力:宝石骑士出装! 社区举办互动活动,大家帮忙想想有没有新颖的小游戏,谢谢 求大学社团走进社区活动的小游戏 最热闹的社区居民活动玩的小游戏有哪些 寻找适合社区促销活动的小游戏 贪吃蛇 C语言 简易程序设计 c语言 贪吃蛇 程序 急求C语言程序设计—贪吃蛇的总结·!! 不知道怎么写 求c语言程序设计(贪吃蛇闯关版)的代码 有没有关于“社会工程学”的书籍? 社会工程学的书籍有那些? 社会工程学有哪些书籍 有什么好的社会工程学书籍 三国志9秘籍 三国志9秘籍+攻略 三国志9威力加强版秘籍 三国志9有什么作弊方法啊? 英雄联盟未来战士都有哪些皮肤 LOl未来战士皮肤有什么特效 LOL ez除了未来战士还有什么皮肤好看,有特效? lolEZ哪几个皮肤有特效?除了未来战士 腾讯新出的游戏叫什么? 最近有新出什么新游戏?? 最近有什么新出的游戏??? 最近新出了什么游戏? 达拉然怎么去外域 求图 WOW联盟 怎么去外域啊 WOW,LM怎么去外域? 魔兽世界LM达拉然怎么去外域,详细路线 求一个《混乱军团》的下载地址 混乱军团在哪下载?