- N +

貪吃蛇的簡單代碼,簡單代碼編程 貪吃蛇

今天給各位分享貪吃蛇的簡單代碼的知識,其中也會對簡單代碼編程 貪吃蛇進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!

貪吃蛇c語言代碼最短

#include<bits/stdc++.h>

#include<windows.h>

#include<conio.h>

usingnamespacestd;

voidgotoxy(intx,inty){COORDpos={x,y};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}//光標定位

classFood{//食物類

private:intm_x;intm_y;

public:

voidrandfood(){//隨機產生一個食物

srand((int)time(NULL));//利用時間添加隨機數種子,需要ctime頭文件

L1:{m_x=rand()%(85)+2;//2~86

m_y=rand()%(25)+2;//2~26

if(m_x%2)gotoL1;//如果食物的x坐標不是偶數則重新確定食物的坐標

gotoxy(m_x,m_y);//在確認好的位置輸出食物

cout<<"★";}}

intgetFoodm_x(){returnm_x;}//返回食物的x坐標

intgetFoodm_y(){returnm_y;}};//返回食物的y坐標

classSnake{

private:

structSnakecoor{intx;inty;};//定義一個蛇的坐標機構

vector<Snakecoor>snakecoor;//將坐標存入vector容器中

//判斷并改變前進方向的函數

voiddegdir(Snakecoor&nexthead){//定義新的蛇頭變量

staticcharkey='d';//靜態變量防止改變移動方向后重新改回來

if(_kbhit()){

chartemp=_getch();//定義一個臨時變量儲存鍵盤輸入的值

switch(temp){//如果臨時變量的值為wasd中的一個,則賦值給key

default:break;//default是缺省情況,只有任何條件都不匹配的情況下才會執行必須寫在前面!不然蛇無法轉向

case'w':case'a':case's':case'd':

//如果temp的方向和key的方向不相反則賦值因為兩次移動方向不能相反將蛇設置為初始向右走

if(key=='w'&&temp!='s'||key=='s'&&temp!='w'||key=='a'&&temp!='d'||key=='d'&&temp!='a')key=temp;}}

switch(key){//根據key的值來確定蛇的移動方向

case'd':nexthead.x=snakecoor.front().x+2;nexthead.y=snakecoor.front().y;break;

//新的蛇頭的頭部等于容器內第一個數據(舊蛇頭)x坐標+2因為蛇頭占兩個坐標,移動一次加2

case'a':nexthead.x=snakecoor.front().x-2;nexthead.y=snakecoor.front().y;break;

case'w':nexthead.x=snakecoor.front().x;nexthead.y=snakecoor.front().y-1;break;

//因為控制臺的x長度是y的一半,所以用兩個x做蛇頭,需要的坐標是二倍

case's':nexthead.x=snakecoor.front().x;nexthead.y=snakecoor.front().y+1;}}

//游戲結束時設計一個界面輸出“游戲結束”以及分數

voidfinmatt(constintscore){

system("cls");gotoxy(40,14);//清屏然后輸出

cout<<"游戲結束";gotoxy(40,16);

cout<<"得分:"<<score;gotoxy(0,26);

exit(0);}//exit為C++的退出函數exit(0)表示程序正常退出,非0表示非正常退出

voidfinishgame(constintscore){//游戲結束

if(snakecoor[0].x>=88||snakecoor[0].x<0||snakecoor[0].y>=28||snakecoor[0].y<0)finmatt(score);//撞墻

for(inti=1;i<snakecoor.size();i++)if(snakecoor[0].x==snakecoor[i].x&&snakecoor[0].y==snakecoor[i].y)finmatt(score

用CodeBlocks編寫一個語言的貪吃蛇和走迷宮游戲

貪吃蛇還要多線程?一個大的循環每次處理這幾件事:掃描鍵盤輸入,移動蛇,隨機生成蛋,sleep。掃描鍵盤輸入不要做成blocking的就行了。

OK,關于貪吃蛇的簡單代碼和簡單代碼編程 貪吃蛇的內容到此結束了,希望對大家有所幫助。

返回列表
上一篇:
下一篇: