久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6670|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

vs2017實(shí)現(xiàn)的貪吃蛇小游戲源代碼 好玩的東西第二蛋

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:481399 發(fā)表于 2019-3-17 19:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
使用vs2017實(shí)現(xiàn)的貪吃蛇小游戲
基于c語(yǔ)言,玩了很久的單片機(jī)了突然想回去玩玩上位機(jī)就跟著視頻學(xué)些了這個(gè)
因?yàn)椴粫?huì)錄制視頻視頻就不上傳了
純屬個(gè)人興趣愛(ài)好
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <conio.h>
  5. #include <windows.h>

  6. //輔助宏定義
  7. #define maph                        25
  8. #define mapw                        40
  9. #define snakesize                50



  10. struct
  11. {
  12.         //如何去定位:坐標(biāo)
  13.         int x;
  14.         int y;
  15. }food;

  16. //蛇的結(jié)構(gòu)體
  17. struct
  18. {
  19.         //記錄蛇得坐標(biāo)
  20.         int x[snakesize];
  21.         int y[snakesize];

  22.         //蛇的長(zhǎng)度
  23.         int len;
  24.         int speed;
  25. }snake;

  26. //全局變量
  27. int key = 'w';//初始方向
  28. int changeFlage = 0;//變化標(biāo)記


  29. //////////////////////
  30. //模塊設(shè)計(jì)
  31. ////////////////////
  32. //地圖
  33. void drawmap();
  34. //食物
  35. void creatfood();
  36. //按鍵控制方向
  37. void keydown();
  38. //狀態(tài),判斷是否結(jié)束游戲
  39. int snakestatus();
  40. //光標(biāo)移動(dòng),光標(biāo)移動(dòng)
  41. void gotoxy(int x,int y);



  42. //////////////////
  43. ////////////主函數(shù)
  44. //////////

  45. int main(void)
  46. {
  47.         drawmap();
  48.         while (1)
  49.         {
  50.                  creatfood();
  51.                  Sleep(snake.speed);
  52.                 keydown();
  53.                 if (!snakestatus())
  54.                 {
  55.                         break;
  56.                 }
  57.         }
  58.         gotoxy(mapw/2, maph/2);
  59.         printf("Game Over");

  60.         system("pause");
  61.         return 0;
  62. }



  63. //地圖
  64. void drawmap()
  65. {                //○食物■墻和貪吃蛇
  66.         //隨機(jī)函數(shù)種子
  67.         srand((unsigned int)time(NULL));
  68.         //圈地
  69.         for (int i = 0; i <= maph; i++)
  70.         {
  71.                 gotoxy(0,i);
  72.                 printf("■");
  73.                 gotoxy(mapw-2, i);
  74.                 printf("■");
  75.         }
  76.         for (int i = 1; i <= mapw; i+=2)
  77.         {
  78.                 gotoxy(i, 0);
  79.                 printf("■");
  80.                 gotoxy(i, maph-1);
  81.                 printf("■");
  82.         }

  83.         //化蛇
  84.                 //確定蛇的屬性
  85.         snake.len = 3;
  86.         snake.speed = 300;
  87.         snake.x[0] = mapw / 2;
  88.         snake.y[0] = maph / 2;//將蛇放到屏幕中間
  89.         //畫(huà)蛇頭
  90.         gotoxy(snake.x[0],snake.y[0]);
  91.         printf("■");
  92.         //畫(huà)蛇的身體
  93.         for (int k = 1; k < snake.len; k++)
  94.         {
  95.                 snake.x[k] = snake.x[k - 1] + 2;
  96.                 snake.y[k] = snake.y[k-1];
  97.                 gotoxy(snake.x[k], snake.y[k]);
  98.                 printf("■");
  99.         }


  100.         //畫(huà)食物
  101.                 //坐標(biāo)的確定
  102. while(1)       
  103. {food.x = rand() % (mapw - 4) + 2;
  104.         food.y = rand() % (maph - 2) + 1;
  105.         if (food.x % 2 == 0)
  106.                 {
  107.                         break;
  108.                 }
  109.         }
  110.                 //將確定的坐標(biāo)畫(huà)出來(lái)
  111.         gotoxy(food.x, food.y);
  112.         printf("○");
  113. }

  114. //食物產(chǎn)生
  115. void creatfood()
  116. {
  117.         //蛇吧食物吃了
  118.         if (snake.x[0] == food.x&&food.y[0] == food.y)
  119.         {
  120.                 srand((unsigned int )time(NULL));
  121.                 //產(chǎn)生的食物不能再蛇的身上并且坐標(biāo)要是偶數(shù)
  122.                 while (1)
  123.                 {
  124.                         int flag = 1;
  125.                         food.x = rand() % (mapw - 4) + 2;
  126.                         food.y = rand() % (maph - 2) + 1;
  127.                         //產(chǎn)生的食物不能再蛇的身上
  128.                         for (int k = 0; k < snake.len; k++)
  129.                         {
  130.                                 if (snake.x[k] == food.x&&snake.y[k] == food.y)
  131.                                 {
  132.                                         flag = 0;
  133.                                         break;
  134.                                 }
  135.                         }
  136.                         if (flag&&food.x % 2 == 0)
  137.                         {
  138.                                 break;
  139.                         }
  140.                 }
  141.         }
  142.         gotoxy(food.x,food.y);
  143.         printf("○");
  144.         snake.len++;
  145.         changeFlage =1;//蛇的標(biāo)記
  146. }
  147. //按鍵實(shí)現(xiàn)
  148. void keydown()
  149. {
  150.         //無(wú)按鍵的處理
  151.         if (_kbhit())
  152.         {        //有按鍵接受
  153.                 fflush(stdin);
  154.                 key = _getch();
  155.         }
  156.         //擦除最后一節(jié)
  157.         if (!changeFlage)
  158.         {
  159.                 gotoxy(snake.x[snake.len-1], snake.y[snake.len - 1]);
  160.                 printf("  ");
  161.         }
  162.         //后面的蛇身處理
  163.         for (int i  =snake.len-1 ; i > 0; i--)
  164.         {
  165.                 snake.x[i] = snake.x[i - 1];
  166.                 snake.y[i] = snake.y[i - 1];
  167.         }
  168.         //按鍵處理移動(dòng)方向的處理
  169.         switch (key)
  170.         {
  171.         case 'w':
  172.         case 'W':
  173.                 snake.y[0]--;
  174.                 break;
  175.         case 's':
  176.         case 'S':
  177.                 snake.y[0]++;
  178.                 break;
  179.         case 'a':
  180.         case 'A':
  181.                 snake.x[0]-=2;
  182.                 break;
  183.         case 'd':
  184.         case 'D':
  185.                 snake.x[0]+=2;
  186.                 break;
  187.         }
  188.         //蛇頭畫(huà)出來(lái)
  189.         gotoxy(snake.x[0], snake.y[0]);
  190.         printf("■");
  191.         changeFlage = 0;
  192.         gotoxy(maph +2,0);
  193. }

  194. //狀態(tài)
  195. int snakestatus()
  196. {
  197.         if (snake.x[0] == 2 || snake.x[0] == maph-2 || snake.y[0] == 0 || snake.y[0] == mapw-1)
  198.                 return 0;

  199.         //蛇頭不能吃自己
  200.         for (int k = 1; k < snake.len; k++
  201. 余下內(nèi)容下載附件
  202.        
復(fù)制代碼

全部資料51hei下載地址:
貪吃蛇c語(yǔ)言版本.docx (16.32 KB, 下載次數(shù): 29)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:595117 發(fā)表于 2019-8-4 17:45 | 只看該作者
很好,值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

板凳
ID:605382 發(fā)表于 2019-8-30 09:59 | 只看該作者
很好,值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

地板
ID:723735 發(fā)表于 2020-5-20 23:12 來(lái)自手機(jī) | 只看該作者
新手看不懂,要是配個(gè)游戲的圖就好了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 激情一区 | 国产91精品在线 | 91视频在线网站 | 日韩久久久久久 | 国产日韩欧美在线观看 | 狠狠艹 | 中文字幕成人av | 在线看亚洲 | 精品视频久久久久久 | 国产一区二区三区四区五区3d | 天堂一区 | 国产乱码精品一区二区三区五月婷 | 欧美a级成人淫片免费看 | 日韩电影免费在线观看中文字幕 | 亚洲高清视频在线 | 国内自拍第一页 | 国产高清久久久 | 国产一区 | 日中文字幕在线 | 亚洲精品久久久久久国产精华液 | 久久精品a级毛片 | 97视频在线观看免费 | 97日日碰人人模人人澡分享吧 | 国产日产久久高清欧美一区 | 日本在线观看视频 | 亚洲免费在线观看 | 欧美激情亚洲天堂 | 九一视频在线观看 | 精品国产一区二区三区久久久四川 | 99热视| 欧美1区 | 99pao成人国产永久免费视频 | 国内毛片毛片毛片毛片 | 操视频网站 | 亚洲v日韩v综合v精品v | 91免费看片| 午夜寂寞影院列表 | 免费观看一级毛片 | 91久久精品一区二区二区 | 国产精品久久久久久久久久久久久 | 国产精品海角社区在线观看 |