當前位置:編程學習大全網 - 遊戲軟體 - 在dos環境下c語言編程編壹個貪吃蛇遊戲

在dos環境下c語言編程編壹個貪吃蛇遊戲

程序設計及說明

1

、邊墻(

Wall

該類規定遊戲的範圍大小。

2

、蛇類(

Snake

用該類生成壹個實例蛇

snake

3

、移動(

Move

該類用於實現對蛇的操作控制,即蛇頭方向的上下左右的移動操作。

4

、食物類(

Food

該類是遊戲過程中食物隨機產生的控制和顯示。

5

、判斷死亡(

Dead

該類是對遊戲過程中判斷玩家操作是否導致蛇的死亡,其中包括蛇頭咬食自己身體和蛇頭是否觸

及遊戲“邊墻”。

6

、蛇結點(

SnakeNode

該類是蛇吃下隨機產生的食物從而增加長度的控制類,其中包括蛇長度增加和尾部的變化。

7

、計分統計(

Score

該類由於玩家的遊戲成績記錄,及遊戲結束時的得分輸出。

...

部分函數及說明

1.Char menu();

/*

用於玩家選擇的遊戲速度,返回壹個

char

*/

2.DELAY(char ch1);

/*

用於控制遊戲速度

*/

3.void drawmap();

/*

繪制遊戲地圖函數

*

4

void menu()

/*

遊戲幫助信息的輸出

*

...

部分類細節解說

1

、蛇的構建

Snake

class Snake{

public:

int x[n]

int y[n];

int node;

//

蛇身長度

int direction;//

蛇運動方向

int

life;//

蛇生命,判斷死亡

2

、隨機食物

Food

利用

rand(

)函數進行隨機數產生,然後就行坐標定位

void Food(void){

...

int pos_x = 0;

int pos_y = 0;

pos_x = rand() % length;//x

坐標的確定

pos_y = rand() % (width-1);//y

坐標的確定

...

3

、蛇頭方向確定

利用

switch

語句進行方向確定

...

switch(){

case VK_UP:{

OutChar2.Y--;

y--;

break;

}

case VK_LEFT:{

OutChar2.Y++;

y++;

break;

}

case VK_DOWN:{

OutChar2.X---;

x--;

break;

}

case 'VK_RIGHT:{

OutChar2.X++;

x++;

break;

}

}

代碼

#include <iostream>

#include <ctime>

#include <conio.h>

#include <windows.h>

#include <time.h>

using namespace std;

int score=0,t=300,f=1;//

得分與時間間隔

/ms

(控制貪吃蛇的速度)

double ss=0,tt=0;//

統計時間所用參數

class Node

{

Node(): x(0), y(0), prior(0), next(0) { }

int x;

int y;

Node *prior;

Node *next;

friend class Snake;

};

class Snake

{

public:

Snake();

~Snake();

void output();

void move();

void change_point(char);

private:

Node *head;

Node *tail;

enum p{ UP

, RIGHT, DOWN, LEFT }point; //

方向

int food_x, food_y; //

食物的坐標

static const int N = 23;

int game[N][N];

void add_head(int, int); //

添加坐標為

a,b

的結點

void delete_tail(); //

刪除最後壹個結點

void greate_food(); //

產生食物

void gotoxy(int, int);

};

void menu();

//

遊戲操作菜單

int main()

{

system("color a");

//

初始

cmd

窗口顏色為黑(背景)淡綠(文字)

cout<<"\n\n\n\n\n\n

";

for(int i=0;i<23;i++)

{char star[]={"Welcome To Snake Game!"};

cout<<star[i];

Sleep(170);}

cout<<"\n\n

祝妳好運!

"<<endl;

Sleep(3000);

if(kbhit()){char kk=getch();if(kk==9)f=5;} //

如果執行,吃壹顆星加

5

system("cls");

Snake s;

menu();

system("color 1a");

s.output();

while (true)

{

char keydown = getch();

if(keydown==32)getch();

if(keydown==27)return 0;

s.change_point(keydown);

while (!kbhit())

{clock_t start,end;start=clock();

s.move();

s.output();

Sleep(t);

end=clock();tt=(double)(end-start)/CLOCKS_PER_SEC;ss+=tt;

cout<<"

時間:

"<<(int)ss;

  • 上一篇:楚漢傳奇項羽和季布認識是哪壹集
  • 下一篇:電視劇《有妳才有家》大結局是什麽?
  • copyright 2024編程學習大全網