當前位置:首頁 » 編程語言 » c語言小游戲貪吃蛇

c語言小游戲貪吃蛇

發布時間: 2022-06-11 12:02:50

❶ 用c語言設計貪吃蛇游戲

//<Copyrightliaoqb>
#include<windows.h>
#include<stdlib.h>
#include<time.h>

constintLENGTH=40;
constintWIDTH=10;
constintRANGE=50;
constintBeginLength=5;
constintspeed=300;
#defineSNAKE_COLORRGB(176,196,222)
#defineBACKGROUND_COLORRGB(255,255,0)
#defineDRAW_SNAKE(x)(x)*WIDTH

enumIsSnake{isSnake,isNotSnake,isFood};

IsSnakemap[LENGTH][LENGTH];

structsnake{
intx;
inty;
snake*next;

snake(intx,inty,snake*n=NULL){
this->x=x;
this->y=y;
next=n;
}
};//snake

typedefstructsnakeSnake;

Snake*head=NULL;//queue
Snake*tail=NULL;//queue
intdirect=0;//direction
RECTplayground;//district
TCHARszAppName[]=TEXT("-*-snakegame-*");//Theprojectname

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//messagefunction
voidInitializer();
voidController(Snake*,LPVOID);//controlthesnake
voidMove(HWND);
voidPutFood();

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPreInstance,PSTRszCmdLine,intiCmdShow){
MSGmsg;
HWNDhwnd;
WNDCLASSwndclass;

while(TRUE){
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=CreateSolidBrush(RGB(255,255,255));
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName=szAppName;
wndclass.lpszMenuName=NULL;
wndclass.style=CS_HREDRAW|CS_VREDRAW;

if(!RegisterClass(&wndclass)){
MessageBox(NULL,TEXT("Pleasetryagain!!!"),szAppName,MB_ICONERROR);
return0;
}
break;
}

hwnd=CreateWindow(szAppName,TEXT("<^_^>SnakeGame<^_^>"),WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,SW_NORMAL);
UpdateWindow(hwnd);

while(TRUE){
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){
if(msg.message==WM_QUIT)
break;

TranslateMessage(&msg);
DispatchMessage(&msg);
}else{
Move(hwnd);
}
}

returnmsg.wParam;
}

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam){
HDChdc;
PAINTSTRUCTps;
HBRUSHhBrush;

switch(message){
caseWM_DESTROY:
PostQuitMessage(0);
return0;

caseWM_CREATE:
Initializer();
MoveWindow(hwnd,RANGE,RANGE,WIDTH*LENGTH+RANGE*3,WIDTH*LENGTH+RANGE*3,TRUE);
return0;

caseWM_KEYDOWN:
switch(wParam){
caseVK_LEFT:
if(direct!=VK_RIGHT)
direct=VK_LEFT;
break;

caseVK_RIGHT:
if(direct!=VK_LEFT)
direct=VK_RIGHT;
break;

caseVK_UP:
if(direct!=VK_DOWN)
direct=VK_UP;
break;

caseVK_DOWN:
if(direct!=VK_UP)
direct=VK_DOWN;
break;

default:
break;
}
return0;

caseWM_PAINT:
hdc=BeginPaint(hwnd,&ps);
SetViewportOrgEx(hdc,RANGE,RANGE,NULL);
hBrush=CreateSolidBrush(BACKGROUND_COLOR);
SelectObject(hdc,hBrush);
Rectangle(hdc,playground.left,playground.top,playground.right,playground.bottom);
DeleteObject(hBrush);

hBrush=CreateSolidBrush(SNAKE_COLOR);
SelectObject(hdc,hBrush);

for(inti=0;i<LENGTH;++i){
for(intj=0;j<LENGTH;++j){
if(map[i][j]==isSnake||map[i][j]==isFood){
Rectangle(hdc,DRAW_SNAKE(i),DRAW_SNAKE(j),DRAW_SNAKE(i+1),DRAW_SNAKE(j+1));
}
}
}
DeleteObject(hBrush);
EndPaint(hwnd,&ps);
}

returnDefWindowProc(hwnd,message,wParam,lParam);
}

voidInitializer(){
for(inti=0;i<LENGTH;++i){
for(intj=0;j<LENGTH;++j){
map[i][j]=isNotSnake;
}
}
for(i=0;i<BeginLength;++i){
if(i==0){
head=tail=newsnake(i,0);
}else{
snake*temp=newsnake(i,0);
tail->next=temp;
tail=temp;
}
map[i][0]=isSnake;
}
playground.left=playground.top=0;
playground.right=playground.bottom=WIDTH*LENGTH;
direct=VK_RIGHT;
PutFood();
}

voidPutFood(){
srand(static_cast<unsigned>(time(NULL)));
intx,y;

do{
x=rand()%LENGTH;
y=rand()%LENGTH;
}while(map[x][y]==isSnake);

map[x][y]=isFood;
}//putfood

voidMove(HWNDhwnd){
snake*temp;

switch(direct){
caseVK_LEFT:
temp=newsnake(tail->x-1,tail->y);
break;

caseVK_RIGHT:
temp=newsnake(tail->x+1,tail->y);
break;

caseVK_UP:
temp=newsnake(tail->x,tail->y-1);
break;

caseVK_DOWN:
temp=newsnake(tail->x,tail->y+1);
break;
}

Controller(temp,hwnd);
//InvalidateRect(hwnd,NULL,FALSE);
Sleep(speed);//controlspeed
}//snakemoving

voidController(Snake*temp,LPVOIDlParam){
HWNDhwnd;
hwnd=(HWND)lParam;
if(temp->x<0||temp->x>=LENGTH||temp->y<0||temp->y>=LENGTH
||map[temp->x][temp->y]==isSnake){//thesnakeisdied
MessageBox(NULL,TEXT("<Copyrightliaoqb>Sorry!!!GameOver!!!<Copyrightliaoqb>"),szAppName,0);
deletetemp;

while(head!=NULL){
Snake*ptr=head;
head=head->next;
deleteptr;
}
head=tail=temp=NULL;
Initializer();
return;
}elseif(map[temp->x][temp->y]==isNotSnake){//move
map[temp->x][temp->y]=isSnake;
map[head->x][head->y]=isNotSnake;
snake*ptr=head;
head=head->next;
deleteptr;
tail->next=temp;
tail=temp;
InvalidateRect(hwnd,NULL,FALSE);
}else{//ifeatfood
map[temp->x][temp->y]=isSnake;
tail->next=temp;
tail=temp;
PutFood();
//InvalidateRect(hwnd,NULL,FALSE);
}
}

❷ C語言貪吃蛇小游戲

我說下我的思路..

把屏幕分成多個格子,蛇所在的格子高亮顯示,.高亮蛇前面的一個格子,去掉蛇尾的格子高亮顯示,大概就是這樣了。

❸ 用c語言編寫的貪食蛇游戲

這是一個成功的貪吃蛇代碼(c語言編寫的),希望你能看懂!慢慢看:
#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)
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;
/*新的一節先放在看不見的位置,下次循環就取前一節的位置*/
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();
}

❹ c語言貪吃蛇代碼

基本思路:

蛇每吃一個食物蛇身子就增加一格,用UP, DOWN, LEFT, RIGHT控制蛇頭的運動,而蛇身子跟著蛇頭走,每後一格蛇身子下一步走到上一格蛇身子的位置,以此類推。

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#define BEG_X 2

#define BEG_Y 1

#define WID 20

#define HEI 20

HANDLE hout;

typedef enum {UP, DOWN, LEFT, RIGHT} DIR;

typedef struct Snake_body

{

COORD pos;//蛇身的位置

struct Snake_body *next;//下一個蛇身

struct Snake_body *prev;//前一個蛇身

}SNAKE, *PSNAKE;

PSNAKE head = NULL;//蛇頭

PSNAKE tail = NULL;//蛇尾

//畫游戲邊框的函數

void DrawBorder()

{

int i, j;

COORD pos = {BEG_X, BEG_Y};

for(i = 0; i < HEI; ++i)

{

SetConsoleCursorPosition(hout, pos);

for(j = 0; j < WID; ++j)

{

if(i == 0)//第一行

{

if(j == 0)

printf("┏");

else if(j == WID - 1)

printf("┓");

else

printf("━");

}

else if(i == HEI - 1)//最後一行

{

if(j == 0)

printf("┗");

else if(j == WID - 1)

printf("┛");

else

printf("━");

}

else if(j == 0 || j == WID - 1)//第一列或最後一列

printf("┃");

else

printf(" ");

}

++pos.Y;

}

}

//添加蛇身的函數

void AddBody(COORD pos)

{

PSNAKE pnew = (PSNAKE)calloc(1, sizeof(SNAKE));

pnew->pos = pos;

if(!head)

{

head = tail = pnew;

}

else

{

pnew->next = head;//新創建蛇身的next指向原先的蛇頭

head->prev = pnew;//原先的蛇頭的prev指向新創建的蛇身

head = pnew;//把新創建的蛇身作為新的蛇頭

}

SetConsoleCursorPosition(hout, head->pos);

printf("◎");

}

//蛇身移動的函數

void MoveBody(DIR dir)

{

PSNAKE ptmp;

COORD pos = head->pos;

switch(dir)

{

case UP:

if(head->pos.Y > BEG_Y + 1)

--pos.Y;

else

return;

break;

case DOWN:

if(head->pos.Y < BEG_Y + HEI - 2)

++pos.Y;

else

return;

break;

case LEFT:

if(head->pos.X > BEG_X + 2)

pos.X -= 2;

else

return;

break;

case RIGHT:

if(head->pos.X < BEG_X + (WID - 2) * 2)

pos.X += 2;

else

return;

break;

}

AddBody(pos);//添加了一個新的蛇頭

ptmp = tail;//保存當前的蛇尾

tail = tail->prev;

if(tail)

tail->next = NULL;

SetConsoleCursorPosition(hout, ptmp->pos);

printf(" ");

free(ptmp);

}

int main()

{

int ctrl;

DIR dir = RIGHT;//初始蛇的方向是向右的

COORD pos = {BEG_X + 2, BEG_Y + HEI / 2};

system("color 0E");

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

hout = GetStdHandle(STD_OUTPUT_HANDLE);

printf(" ------------貪吃蛇的移動------------");

DrawBorder();

//自定義幾個蛇的身體

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

pos.X += 2;

AddBody(pos);

//控制蛇的移動

while(ctrl = getch())

{

switch(ctrl)

{

case 'w':

if(dir == DOWN)

continue;

dir = UP;

break;

case 's':

if(dir == UP)

continue;

dir = DOWN;

break;

case 'a':

if(dir == RIGHT)

continue;

dir = LEFT;

break;

case 'd':

if(dir == LEFT)

continue;

dir = RIGHT;

break;

case 'q':

return 0;

}

MoveBody(dir);

}

return 0;

}

(4)c語言小游戲貪吃蛇擴展閱讀:

實現邏輯

1,可以設置游標,就能實現制定位置列印製定符號。

2,涉及一個結構體,包含兩個元素坐標元素和一個結構體指針。

3,結構體串聯形成鏈表,遍歷獲取成員坐標,列印符號得到蛇身。

4,不斷的加頭,去尾,重新遍歷坐標,再列印形成蛇的移動。

5,食物產生的位置判定,不能越界,也不能與蛇身體重合。

6,蛇的轉向判定,一條規則,不允許倒退。

7,轉向的實現,跟行進方向決定新的關節坐標(當前頭的上下左右)

8,死亡檢測,是否頭節點坐標是否與牆壁重合,是否與身體其他關節重合。

9,加速減速,設置刷新休眠時間實現。

❺ 貪吃蛇游戲的C語言編程

#include <windows.h>
#include <ctime>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
#ifndef SNAKE_H
#define SNAKE_H
class Cmp
{
friend class Csnake;
int rSign; //橫坐標
int lSign; //豎坐標
public:
// friend bool isDead(const Cmp& cmp);
Cmp(int r,int l){setPoint(r,l);}
Cmp(){}
void setPoint(int r,int l){rSign=r;lSign=l;}
Cmp operator-(const Cmp &m)const
{
return Cmp(rSign-m.rSign,lSign-m.lSign);
}
Cmp operator+(const Cmp &m)const
{
return Cmp(rSign+m.rSign,lSign+m.lSign);
}
};

const int maxSize = 5; //初始蛇身長度
class Csnake
{
Cmp firstSign; //蛇頭坐標
Cmp secondSign;//蛇頸坐標
Cmp lastSign; //蛇尾坐標
Cmp nextSign; //預備蛇頭
int row; //列數
int line; //行數
int count; //蛇身長度
vector<vector<char> > snakeMap;//整個游戲界面
queue<Cmp> snakeBody; //蛇身
public:
int GetDirections()const;
char getSymbol(const Cmp& c)const
//獲取指定坐標點上的字元
{
return snakeMap[c.lSign][c.rSign];
}
Csnake(int n)
//初始化游戲界面大小
{
if(n<20)line=20+2;
else if(n>30)line=30+2;
else line=n+2;
row=line*3+2;
}
bool isDead(const Cmp& cmp)
{
return ( getSymbol(cmp)=='@' || cmp.rSign == row-1
|| cmp.rSign== 0 || cmp.lSign == line-1 ||
cmp.lSign == 0 );
}
void InitInstance(); //初始化游戲界面
bool UpdataGame(); //更新游戲界面
void ShowGame(); //顯示游戲界面
};
#endif // SNAKE_H

using namespace std;
//測試成功
void Csnake::InitInstance()
{
snakeMap.resize(line); // snakeMap[豎坐標][橫坐標]
for(int i=0;i<line;i++)
{
snakeMap[i].resize(row);
for(int j=0;j<row;j++)
{
snakeMap[i][j]=' ';
}
}
for(int m=1;m<maxSize+1;m++)
{
//初始蛇身
snakeMap[line/2][m]='@';
//將蛇身坐標壓入隊列
snakeBody.push(Cmp(m,(line/2)));
//snakeBody[橫坐標][豎坐標]
}
//鏈表頭尾
firstSign=snakeBody.back();
secondSign.setPoint(maxSize-1,line/2);
}

//測試成功
int Csnake::GetDirections()const
{
if(GetKeyState(VK_UP)<0) return 1; //1表示按下上鍵
if(GetKeyState(VK_DOWN)<0) return 2; //2表示按下下鍵
if(GetKeyState(VK_LEFT)<0) return 3; //3表示按下左鍵
if(GetKeyState(VK_RIGHT)<0)return 4; //4表示按下右鍵
return 0;
}

bool Csnake::UpdataGame()
{
//-----------------------------------------------
//初始化得分0
static int score=0;
//獲取用戶按鍵信息
int choice;
choice=GetDirections();
cout<<"Total score: "<<score<<endl;
//隨機產生食物所在坐標
int r,l;
//開始初始已經吃食,產生一個食物
static bool eatFood=true;
//如果吃了一個,才再出現第2個食物
if(eatFood)
{
do
{
//坐標范圍限制在(1,1)到(line-2,row-2)對點矩型之間
srand(time(0));
r=(rand()%(row-2))+1; //橫坐標
l=(rand()%(line-2))+1;//豎坐標
//如果隨機產生的坐標不是蛇身,則可行
//否則重新產生坐標
if(snakeMap[l][r]!='@')
{snakeMap[l][r]='*';}
}while (snakeMap[l][r]=='@');
}
switch (choice)
{
case 1://向上
//如果蛇頭和社頸的橫坐標不相同,執行下面操作
if(firstSign.rSign!=secondSign.rSign)nextSign.setPoint(firstSign.rSign,firstSign.lSign-1);
//否則,如下在原本方向上繼續移動
else nextSign=firstSign+(firstSign-secondSign);
break;
case 2://向下
if(firstSign.rSign!=secondSign.rSign)nextSign.setPoint(firstSign.rSign,firstSign.lSign+1);
else nextSign=firstSign+(firstSign-secondSign);
break;
case 3://向左
if(firstSign.lSign!=secondSign.lSign)nextSign.setPoint(firstSign.rSign-1,firstSign.lSign);
else nextSign=firstSign+(firstSign-secondSign);
break;
case 4://向右
if(firstSign.lSign!=secondSign.lSign)nextSign.setPoint(firstSign.rSign+1,firstSign.lSign);
else nextSign=firstSign+(firstSign-secondSign);
break;
default:
nextSign=firstSign+(firstSign-secondSign);
}
//----------------------------------------------------------
if(getSymbol(nextSign)!='*' && !isDead(nextSign))
//如果沒有碰到食物(且沒有死亡的情況下),刪除蛇尾,壓入新的蛇頭
{
//刪除蛇尾
lastSign=snakeBody.front();
snakeMap[lastSign.lSign][lastSign.rSign]=' ';
snakeBody.pop();
//更新蛇頭
secondSign=firstSign;
//壓入蛇頭
snakeBody.push(nextSign);
firstSign=snakeBody.back();
snakeMap[firstSign.lSign][firstSign.rSign]='@';
//沒有吃食
eatFood=false;
return true;
}
//-----吃食-----
else if(getSymbol(nextSign)=='*' && !isDead(nextSign))
{
secondSign=firstSign;
snakeMap[nextSign.lSign][nextSign.rSign]='@';
//只壓入蛇頭
snakeBody.push(nextSign);
firstSign=snakeBody.back();
eatFood=true;
//加分
score+=20;
return true;
}
//-----死亡-----
else {cout<<"Dead"<<endl;cout<<"Your last total score is "<<score<<endl; return false;}
}

void Csnake::ShowGame()
{
for(int i=0;i<line;i++)
{
for(int j=0;j<row;j++)
cout<<snakeMap[i][j];
cout<<endl;
}
Sleep(1);
system("cls");
}

int main()
{
Csnake s(20);
s.InitInstance();
//s.ShowGame();
int noDead;
do
{
s.ShowGame();
noDead=s.UpdataGame();
}while (noDead);
system("pause");
return 0;
}

這個代碼可以運行的,記得給分啦

❻ 貪吃蛇游戲用C語言怎麼編寫

在內存中定義一個數組,存儲當前局面(如果棋盤小(<15)可以選用unsigned
char類型,否則用int,蛇身就用1,2,3,4,5這樣的數字序列表示,每走一格,根據當前方向將下一格數字變一下,把尾巴也處理一下,),每一秒刷新一下(向前走一格),每刷新一下,就重繪一遍當前局面(可以用prinrf函數,也可以用繪圖函數),
總之方法很多很多,自己下來可以思索一下

熱點內容
openvas源碼 發布:2025-02-07 23:48:14 瀏覽:318
面java 發布:2025-02-07 23:36:21 瀏覽:617
編譯原理練習題第三章答案 發布:2025-02-07 23:35:05 瀏覽:752
爐石寫腳本 發布:2025-02-07 23:31:24 瀏覽:985
stdstring源碼 發布:2025-02-07 23:26:46 瀏覽:782
伺服器在手機上怎麼開 發布:2025-02-07 23:25:07 瀏覽:734
我的世界怎麼進2s2t伺服器 發布:2025-02-07 23:08:47 瀏覽:925
丁霞訪問 發布:2025-02-07 22:56:19 瀏覽:855
java中set集合 發布:2025-02-07 22:43:34 瀏覽:31
播放這個wifi密碼是多少 發布:2025-02-07 22:34:54 瀏覽:100