最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)貪吃蛇

 更新時(shí)間:2020年04月28日 09:24:39   作者:oyxy2019  
這篇文章主要為大家詳細(xì)介紹了C++結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)貪吃蛇的具體代碼,供大家參考,具體內(nèi)容如下

代碼:

#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>

using namespace std;

const int h=50,w=50,MaxLen=400;
void gotoxy(short y,short x)//光標(biāo)移動(dòng)函數(shù) 
{
 COORD pos={x,y};
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
struct node
{
 int x,y;
};
node s[MaxLen];
node food;
int dir,len;
int Map[h+5][w+5];
int Time[7]={0},level;//building。。。


void FoodCreate()
{
 srand ((unsigned)time(NULL));//時(shí)間作隨機(jī)數(shù)種子,避免偽隨機(jī) 
 while(1)
 {
 food.x=rand()%h,food.y=rand()%w; 
 if(food.x>0&&food.y>0&&Map[food.x][food.y]==0)break;
 }
 gotoxy(food.x,food.y),printf("@");
 gotoxy(h+1,0);
}

void init()
{
 system("cls"); 
 for(int i=0;i<=h;i++)//畫(huà)圖 
 {
 for(int j=0;j<=w;j++)
 {
 if(i==0||j==0||i==h||j==w)Map[i][j]=1,printf("#");
 else Map[i][j]=0,printf(" ");
 } 
 printf("\n");
 }
 
 len=2; //初始化蛇 
 dir=0;
 s[1].x=12,s[1].y=4;
 s[len].x=12,s[len].y=3;
 Map[s[1].x][s[1].y]=Map[s[len].x][s[len].y]=1;
 gotoxy(s[1].x,s[1].y),printf("*");
 gotoxy(s[len].x,s[len].y),printf("*");
 gotoxy(h+1,0);
 
 FoodCreate(); 
}

int move()
{
 node next=s[1];
 switch(dir)
 {
 case 0:next.y++;break;
 case 1:next.x--;break;
 case 2:next.y--;break;
 case 3:next.x++;break;
 }
 if(Map[next.x][next.y])return 0; //下一步GG
 if(next.x==food.x&&next.y==food.y) //下一步遇到食物 
 {
 len++;
 FoodCreate();  
 }
 else   //下一步是空白就將尾部覆蓋 
 {
 gotoxy(s[len].x,s[len].y),printf(" "); 
 Map[s[len].x][s[len].y]=0; 
 }
 
 gotoxy(next.x,next.y),printf("*");
 gotoxy(h+1,0); 
 Map[next.x][next.y]=1; 
 for(int i=len;i>1;i--)s[i]=s[i-1];
 s[1]=next; 
 Sleep(100);  //Sleep放在最后比較順滑//速度在這兒調(diào) 
 return 1; 
}

void GameOver()
{
 for(int i=1;i<=3;i++)
 {
 gotoxy(s[1].x,s[1].y);
 printf(" ");
 Sleep(300);
 gotoxy(s[1].x,s[1].y); 
 printf("*");
 Sleep(300); 
 }
 gotoxy(h+1,0);
 printf("GameOver\n");
 printf("Press any key to continue...");
}
void Welcome()
{
 printf("為了您的游戲體驗(yàn),請(qǐng)先調(diào)整控制臺(tái)字體和布局(記得不要忘了默認(rèn)設(shè)置):\n");
 printf("右鍵白色框->屬性->字體 選擇點(diǎn)陣字體并調(diào)整字體大小為8×8\n");
 printf("再選擇布局設(shè)置窗口大小,推薦60×60\n\n"); 
 printf("WASD控制方向\n");
 
 printf("\n任意鍵進(jìn)入貪吃蛇皮..."); 
 getch();
 
}
int main()
{
 Welcome();
 init();
 while(1)
 {
 if(kbhit())
 {
 char ch=getch();
 int temp=dir;
 switch(ch)
 {
 case 'd':temp=0;break;
 case 'w':temp=1;break;
 case 'a':temp=2;break;
 case 's':temp=3;break;
 }
 if((temp+dir)%2)dir=temp;//如果方向不沖突 
 }
 if(move()==0)
 {
 GameOver();
 getch();
 init();
 }
 }
 
}

運(yùn)行效果:

關(guān)于C++小游戲的更多精彩內(nèi)容請(qǐng)點(diǎn)擊專題: 《C++經(jīng)典小游戲》 學(xué)習(xí)了解

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一起來(lái)看看C語(yǔ)言線性表的線性鏈表

    一起來(lái)看看C語(yǔ)言線性表的線性鏈表

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言線性表的線性鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • C++ string字符串的使用和簡(jiǎn)單模擬實(shí)現(xiàn)

    C++ string字符串的使用和簡(jiǎn)單模擬實(shí)現(xiàn)

    C語(yǔ)言中,字符串是以'\0'結(jié)尾的一些字符的集合,為了操作方便,C標(biāo)準(zhǔn)庫(kù)中提供了一些str系列的庫(kù)函數(shù),但是這些庫(kù)函數(shù)和字符串是分離的,本文給大家介紹了C++ string字符串的使用和簡(jiǎn)單模擬實(shí)現(xiàn),感興趣的朋友可以參考下
    2024-06-06
  • 12個(gè)關(guān)于C語(yǔ)言的有趣問(wèn)答

    12個(gè)關(guān)于C語(yǔ)言的有趣問(wèn)答

    這篇文章主要介紹了12個(gè)關(guān)于C語(yǔ)言的有趣問(wèn)答,有助于讀者加深對(duì)C語(yǔ)言程序設(shè)計(jì)的理解,需要的朋友可以參考下
    2014-07-07
  • C語(yǔ)言返回值指針的函數(shù)詳解

    C語(yǔ)言返回值指針的函數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言返回值指針的函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 利用C++實(shí)現(xiàn)獲取文件夾下所有文件名

    利用C++實(shí)現(xiàn)獲取文件夾下所有文件名

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)獲取文件夾下所有文件名,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2022-09-09
  • 7種排序算法的實(shí)現(xiàn)示例

    7種排序算法的實(shí)現(xiàn)示例

    這篇文章主要介紹了7種排序算法的實(shí)現(xiàn)示例,需要的朋友可以參考下
    2014-05-05
  • 基于C++中setiosflags()的用法詳解

    基于C++中setiosflags()的用法詳解

    下面小編就為大家?guī)?lái)一篇基于C++中setiosflags()的用法詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • C語(yǔ)言詳細(xì)講解常用字符串處理函數(shù)

    C語(yǔ)言詳細(xì)講解常用字符串處理函數(shù)

    在日常編程中,對(duì)于字符串的操作中我們都很習(xí)慣的使用一些C庫(kù)中自帶的函數(shù),并且關(guān)于字符串的操作函數(shù)基本都在 string.h 這個(gè)頭文件中。關(guān)于C庫(kù)字符串常用處理函數(shù)也是平時(shí)面試或者考試過(guò)程中非常喜歡考的,本文將帶大家手動(dòng)來(lái)實(shí)現(xiàn)這些常用函數(shù)
    2022-05-05
  • C語(yǔ)言實(shí)現(xiàn)掃雷小游戲的示例代碼

    C語(yǔ)言實(shí)現(xiàn)掃雷小游戲的示例代碼

    這篇文中主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)經(jīng)典的掃雷小游戲。掃雷小游戲主要是利用字符數(shù)組、循環(huán)語(yǔ)句和函數(shù)實(shí)現(xiàn),感興趣的小伙伴可以了解一下
    2022-10-10
  • C語(yǔ)言的可變參數(shù)函數(shù)實(shí)現(xiàn)詳解

    C語(yǔ)言的可變參數(shù)函數(shù)實(shí)現(xiàn)詳解

    某些情況下我們希望函數(shù)的參數(shù)個(gè)數(shù)可以根據(jù)需要確定,因此c語(yǔ)言引入可變參數(shù)函數(shù)。典型的可變參數(shù)函數(shù)的例子有printf()、scanf()等,下面我就開(kāi)始講解
    2021-08-08

最新評(píng)論

探索| 齐河县| 卢龙县| 玉田县| 许昌县| 黔南| 高碑店市| 毕节市| 手游| 舞阳县| 吉木乃县| 涪陵区| 玉田县| 天津市| 赤城县| 稻城县| 彭泽县| 车险| 巍山| 珲春市| 胶南市| 武功县| 灵宝市| 芜湖市| 台中县| 大厂| 舒兰市| 冕宁县| 柳林县| 广元市| 兴安县| 浠水县| 称多县| 镇康县| 中卫市| 泽库县| 满城县| 鄯善县| 犍为县| 长汀县| 灵璧县|