日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c语言写贪吃蛇什么水平_C语言实现贪吃蛇游戏(VC6.0)

發布時間:2024/9/30 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言写贪吃蛇什么水平_C语言实现贪吃蛇游戏(VC6.0) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#include#include#include#include

#define U 1#define D 2#define L 3#define R 4//蛇的狀態,U:上 ;D:下;L:左 R:右

typedef struct SNAKE //蛇身的一個節點{

int x;

int y;

struct SNAKE *next;

}snake;

//全局變量//int score=0,add=10;//總得分與每次吃食物得分。int status,sleeptime=200;//每次運行的時間間隔snake *head, *food;//蛇頭指針,食物指針snake *q;//遍歷蛇的時候用到的指針int endgamestatus=0; //游戲結束的情況,1:撞到墻;2:咬到自己;3:主動退出游戲。

//聲明全部函數//void Pos();

void creatMap();

void initsnake();

int biteself();

void createfood();

void cantcrosswall();

void snakemove();

void pause();

void gamecircle();

void welcometogame();

void endgame();

void gamestart();

void Pos(int x,int y)//設置光標位置{

COORD pos;

HANDLE hOutput;

pos.X=x;

pos.Y=y;

hOutput=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleCursorPosition(hOutput,pos);

}

void creatMap()//創建地圖{

int i;

for(i=0;i<58;i+=2)//打印上下邊框 {

Pos(i,0);

printf("■");

Pos(i,26);

printf("■");

}

for(i=1;i<26;i++)//打印左右邊框 {

Pos(0,i);

printf("■");

Pos(56,i);

printf("■");

}

}

void initsnake()//初始化蛇身{

snake *tail;

int i;

tail=(snake*)malloc(sizeof(snake));//從蛇尾開始,頭插法,以x,y設定開始的位置// tail->x=24;

tail->y=5;

tail->next=NULL;

for(i=1;i<=4;i++)

{

head=(snake*)malloc(sizeof(snake));

head->next=tail;

head->x=24+2*i;

head->y=5;

tail=head;

}

while(tail!=NULL)//從頭到為,輸出蛇身 {

Pos(tail->x,tail->y);

printf("■");

tail=tail->next;

}

}

int biteself()//判斷是否咬到了自己{

snake *self;

self=head->next;

while(self!=NULL)

{

if(self->x==head->x && self->y==head->y)

{

return 1;

}

self=self->next;

}

return 0;

}

void createfood()//隨機出現食物{

snake *food_1;

srand((unsigned)time(NULL));

food_1=(snake*)malloc(sizeof(snake));

while((food_1->x%2)!=0) //保證其為偶數,使得食物能與蛇頭對其 {

food_1->x=rand()%52+2;

}

food_1->y=rand()%24+1;

q=head;

while(q->next==NULL)

{

if(q->x==food_1->x && q->y==food_1->y) //判斷蛇身是否與食物重合 {

free(food_1);

createfood();

}

q=q->next;

}

Pos(food_1->x,food_1->y);

food=food_1;

printf("■");

}

void cantcrosswall()//不能穿墻{

if(head->x==0 || head->x==56 ||head->y==0 || head->y==26)

{

endgamestatus=1;

endgame();

}

}

void snakemove()//蛇前進,上U,下D,左L,右R{

snake * nexthead;

cantcrosswall();

nexthead=(snake*)malloc(sizeof(snake));

if(status==U)

{

nexthead->x=head->x;

nexthead->y=head->y-1;

if(nexthead->x==food->x && nexthead->y==food->y)//如果下一個有食物// {

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else //如果沒有食物// {

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf(" ");

free(q->next);

q->next=NULL;

}

}

if(status==D)

{

nexthead->x=head->x;

nexthead->y=head->y+1;

if(nexthead->x==food->x && nexthead->y==food->y) //有食物 {

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else //沒有食物 {

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf(" ");

free(q->next);

q->next=NULL;

}

}

if(status==L)

{

nexthead->x=head->x-2;

nexthead->y=head->y;

if(nexthead->x==food->x && nexthead->y==food->y)//有食物 {

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else //沒有食物 {

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf(" ");

free(q->next);

q->next=NULL;

}

}

if(status==R)

{

nexthead->x=head->x+2;

nexthead->y=head->y;

if(nexthead->x==food->x && nexthead->y==food->y)//有食物 {

nexthead->next=head;

head=nexthead;

q=head;

while(q!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

score=score+add;

createfood();

}

else //沒有食物 {

nexthead->next=head;

head=nexthead;

q=head;

while(q->next->next!=NULL)

{

Pos(q->x,q->y);

printf("■");

q=q->next;

}

Pos(q->next->x,q->next->y);

printf(" ");

free(q->next);

q->next=NULL;

}

}

if(biteself()==1) //判斷是否會咬到自己 {

endgamestatus=2;

endgame();

}

}

void pause()//暫停{

while(1)

{

Sleep(300);

if(GetAsyncKeyState(VK_SPACE))

{

break;

}

}

}

void gamecircle()//控制游戲{

Pos(64,15);

printf("不能穿墻,不能咬到自己\n");

Pos(64,16);

printf("用↑.↓.←.→分別控制蛇的移動.");

Pos(64,17);

printf("F1 為加速,F2 為減速\n");

Pos(64,18);

printf("ESC :退出游戲.space:暫停游戲.");

Pos(64,20);

printf("c語言研究中心 www.dotcpp.com");

status=R;

while(1)

{

Pos(64,10);

printf("得分:%d ",score);

Pos(64,11);

printf("每個食物得分:%d分",add);

if(GetAsyncKeyState(VK_UP) && status!=D)

{

status=U;

}

else if(GetAsyncKeyState(VK_DOWN) && status!=U)

{

status=D;

}

else if(GetAsyncKeyState(VK_LEFT)&& status!=R)

{

status=L;

}

else if(GetAsyncKeyState(VK_RIGHT)&& status!=L)

{

status=R;

}

else if(GetAsyncKeyState(VK_SPACE))

{

pause();

}

else if(GetAsyncKeyState(VK_ESCAPE))

{

endgamestatus=3;

break;

}

else if(GetAsyncKeyState(VK_F1))

{

if(sleeptime>=50)

{

sleeptime=sleeptime-30;

add=add+2;

if(sleeptime==320)

{

add=2;//防止減到1之后再加回來有錯 }

}

}

else if(GetAsyncKeyState(VK_F2))

{

if(sleeptime<350)

{

sleeptime=sleeptime+30;

add=add-2;

if(sleeptime==350)

{

add=1; //保證最低分為1 }

}

}

Sleep(sleeptime);

snakemove();

}

}

void welcometogame()//開始界面{

Pos(40,12);

system("title c語言研究中心 www.dotcpp.com");

printf("歡迎來到貪食蛇游戲!");

Pos(40,25);

system("pause");

system("cls");

Pos(25,12);

printf("用↑.↓.←.→分別控制蛇的移動, F1 為加速,2 為減速\n");

Pos(25,13);

printf("加速將能得到更高的分數。\n");

system("pause");

system("cls");

}

void endgame()//結束游戲{

system("cls");

Pos(24,12);

if(endgamestatus==1)

{

printf("對不起,您撞到墻了。游戲結束.");

}

else if(endgamestatus==2)

{

printf("對不起,您咬到自己了。游戲結束.");

}

else if(endgamestatus==3)

{

printf("您的已經結束了游戲。");

}

Pos(24,13);

printf("您的得分是%d\n",score);

exit(0);

}

void gamestart()//游戲初始化{

system("mode con cols=100 lines=30");

welcometogame();

creatMap();

initsnake();

createfood();

}

int main()

{

gamestart();

gamecircle();

endgame();

return 0;

}

總結

以上是生活随笔為你收集整理的c语言写贪吃蛇什么水平_C语言实现贪吃蛇游戏(VC6.0)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日皮视频在线观看 | 李丽珍裸体午夜理伦片 | 亚洲一区在线视频观看 | 欧美午夜精品一区二区三区电影 | 午夜精品视频一区 | 午夜久久乐 | 亚洲精品 日韩无码 | 男女激情久久 | 6699av| 日韩综合一区 | 国产欧美熟妇另类久久久 | 中文在线a在线 | 国模私拍一区二区三区 | 樱花影院最新免费观看攻略 | 黄色a网站 | 日本黄视频在线观看 | 色一区二区三区四区 | 人成网站在线观看 | 四虎永久免费在线观看 | 久久国产精品毛片 | 高清成人 | 综合网五月 | 亚洲国产欧美日韩在线 | 欧美激情 一区 | 欧美精品一区二区三区久久久竹菊 | 亚洲精品国产av | 老牛影视av老牛影视av | 成人av影视在线 | 久草97 | 极品美女被c | 久久国产精品区 | 一炮成瘾1v1高h | 人人妻人人做人人爽 | 欧美日韩国产一区在线 | 日日日日日日 | 午夜在线观看视频18 | 青青草综合网 | 日本激情在线 | 日本激情网址 | 色网站在线 | 开心激情五月网 | 亚洲欧美综合精品久久成人 | 日韩欧美亚洲视频 | 国产三级做爰高清在线 | 亚洲av无码专区在线播放中文 | 丰满人妻老熟妇伦人精品 | 无码人妻黑人中文字幕 | 亚洲精品鲁一鲁一区二区三区 | 久久久久久久久久久久久女过产乱 | yw视频在线观看 | 欧美精品一区二区免费看 | 男人爆操女人 | 免费精品久久 | 日日夜夜狠狠操 | 久久视频一区 | 久久这里只有精品9 | 黑人巨大精品欧美黑白配亚洲 | 男人日女人在线观看 | 国产无遮挡免费观看视频网站 | 色99视频 | 美女又大又黄 | 欧美日韩国产精品一区 | 欧美一区二区免费 | 做爰视频毛片视频 | 91av视频网 | 无遮挡aaaaa大片免费看 | 少妇裸体淫交视频免费看高清 | 天天搞夜夜| 亚洲视频免费播放 | 国产一区在线免费 | 黄色在线免费观看 | 欧美 日韩 国产在线 | 可以看黄色的网站 | www.九色| 爆操av| 成年人免费视频观看 | 日本福利一区二区三区 | 日本欧美激情 | 亚洲综合色吧 | 国产精品精品久久久 | 天天干妹子| 超碰人人人人人 | 大乳丰满人妻中文字幕日本 | 中文字幕国产在线观看 | 97视频在线免费观看 | 国产主播99| 国产一二在线 | 成人小视频在线免费观看 | 特黄aaaaaa私密按摩 | 国内偷拍一区 | 成人超碰 | 成人午夜视频在线免费观看 | 国产99久久久国产精品 | 狠狠躁夜夜躁人爽 | 欧美成人免费大片 | 欧美日韩亚洲免费 | 亚洲天天av | 欧美一级不卡 | 激情国产一区 |