貪吃蛇小程式(功能完善)

2021-10-05 07:27:13 字數 3281 閱讀 5448

經歷了幾個月對c和c++的學習,已經懂得基本原理的我準備自己寫乙個小專案了

先來look look成果吧!

最後成品

一下操作均在vs2019中,vs低版本無礙,其他編譯器可能有出入

想寫乙個功能較為完備的貪吃蛇應該把它作為乙個專案去寫,而不僅僅是把所有**寫在乙個檔案裡,這應該是程式設計師最基本的意識了

首先要建立乙個結構體,因為我們要用到圖形化程式設計,而圖形介面是由乙個個點組成的

#ifndef mypoint_h

#define mypoint_h

//描述點的結構

struct mypoint ;

#endif

接下來我們需要建立乙個視窗,還是一樣視窗的尺寸同樣是乙個常用的參量,我們也可以把它單獨寫在乙個標頭檔案裡

#pragma once      //這裡pragma once 和上面的ifndef __  define __ 是一樣的

#define width 450

#define length 750

做貪吃蛇首先要明白貪吃蛇分幾部分,第一蛇本身,第二就是食物,所以我們就分兩部分來做

//做蛇

#ifndef _snake_h

#define _snake_h

#include //圖形化函式

#include //按鍵函式

#include "mypoint.h" //自己寫的點的座標

class snake ;

};#endif

在蛇的標頭檔案裡面我們建立了乙個類,寫了關於蛇的一系列操作函式,接下來我們要一一實現這些函式,千萬不要害怕,其實特別簡單,除了一些圖形處理的函式可能你不知道以外,其他的只要學過c語言一般就能理解

#include "snake.h"

#include "window.h"

snake::snake()

position = right; //初始化方向:右面

}void snake::drawsnake()//畫蛇

}void snake::movesnake()//移動蛇

//處理蛇頭

switch (position)

}void snake::keydown()//按鍵控制蛇

break;

case 'a':

case 'a':

case 75:

if (position != right)

break;

case 's':

case 's':

case 80:

if (position != up)

break;

case 'd':

case 'd':

case 77:

if (position != left)

break;

case 32:

char ch;

while ( ch = _getch())

break;

}}int& snake::getsnakesize()//用來修改蛇的長度介面

mypoint snake::getsnakepos(int pos)//獲取蛇的pos節座標

int snake::judge()

//蛇咬住自己

for (int i = 1; i < snakesize; i++)

}return 1;

}

實現了蛇,就該寫食物了,與蛇類似,先寫頭檔案建立類

#ifndef _food_h

#define _food_h

#include #include "mypoint.h"

class food;

#endif

#include "food.h"

#include "window.h"

food::food()

void food::drawfood()

void food::setfoodpos()

int& food::getflag()

mypoint food::getfoodpos()

這就做完了,最後只需要呼叫這些函式就行了

#define _crt_secure_no_warnings   //使用outtextxy()需要這一句

#pragma comment(lib, "winmm.lib") //新增背景**需要新增這一句

#include #include //outtextxy函式內容

#include #include "snake.h" //記住包含進來我們寫的標頭檔案

#include "food.h"

#include "window.h"

using namespace std;

hwnd hwnd = null; //windows 程式設計的知識,控制代碼

int speed = 180; //蛇的速度

int score = 0; //分數

int r = 1; //等級

char grade[100] = ; //分數

char rank[10] = ; //等級

//互動處理,寫在這裡

void eatfood(snake *psnake,food *pfood)

cleardevice();

psnake->getsnakesize()++; //蛇長度加一

pfood->getflag() = 0; //食物標誌變0

}}void ptscore(int score)

void up(int rank)

}int main()

psnake->drawsnake(); //畫蛇

if (psnake->judge()==0)

psnake->movesnake(); //移動蛇

pfood->drawfood(); //畫食物

ptscore(score); //列印分數

eatfood(psnake, pfood); //吃食物做判斷

//只有存在按鍵才做處理

if (_kbhit())

sleep(speed); //速度

} closegraph();

return 0;

}

程式設計實現貪吃蛇小程式

include include include include include define key up w 向上方向鍵 define key down s 向下方向鍵 define key right d 向右方向鍵 define key left a 向左方向鍵 define key spac...

微信小程式 貪吃蛇

效果圖 貪吃蛇view class score box score detail class scoredes 得分text class scorenum text view class score box score detail class scoredes 最高得分text class sco...

貪吃蛇 已經比較完善

附件中含有兩個版本,第一版本實現了最基本的功能.包括運動,吃food,暫停,計分,重來.使用了乙個二維陣列來儲存當前地圖上有哪些東西,0表示沒有,1表示自己的一部分,2表示障礙物,3表示food.才開始新建乙個點,將其加入linkedlist中儲存 每一次移動都是將linkedlist的頭移除,再在...