貪吃蛇案例 c

2021-09-27 13:26:32 字數 4968 閱讀 2645

wall.h

#pragma once

#ifndef _wall_head

#define _wall_head

#include

using

namespace std;

class

wall

;// 初始化牆壁

void

initwall()

;// 畫出強牆壁

void

drawwall()

;// 根據索引設定二維陣列裡的內容

void

setwall

(int x,

int y,

char c)

;// 根據索引獲取當前位置的符號

char

getwall

(int x,

int y)

;private

:char gamearray[row]

[col];}

;#endif

// !wall

wall.cpp
#include

"wall.h"

void wall::

initwall()

else}}

}void wall::

drawwall()

if(i ==5)

if(i ==6)

if(i ==6)

if(i ==7)

if(i ==8)

if(i ==9)

cout << endl;

// cout << endl;}}

void wall::

setwall

(int x,

int y,

char c)

char wall::

getwall

(int x,

int y)

snake.h
#pragma once

#include

#include

"wall.h"

#include

"food.h"

#include

using

namespace std;

class

snake

;// 節點

struct point ;

void

initsnake()

;// 銷毀節點

void

destoryponit()

;// 新增節點

void

addponit

(int x,

int y)

;// 刪除節點 --刪除最後乙個節點

void

delpoint()

;// 移動蛇的操作 -- 返回值代表移動是否成功

bool

move

(char key)

;// 設定難度

// 獲取刷屏時間

intgetsleeptime()

;// 獲取蛇的身段

intcountlist()

;// 獲取分數

intgetscore()

; point * phead;

// 頭節點

wall &wall;

food &food;

bool isrool;

// 是否碰到尾巴 -- 迴圈的標識

};

snake.cpp
#include

"snake.h"

void

gotoxy1

(handle hout1,

int x,

int y)

handle hout1 =

getstdhandle

(std_output_handle)

;// 定義顯示器控制代碼變數

snake::

snake

(wall & tmpwall, food &tmpfood)

:wall

(tmpwall)

,food

(tmpfood)

// 初始化 snake 類裡面的wall

// 初始化蛇

void snake::

initsnake()

// 銷毀所有節點

void snake::

destoryponit()

}void snake::

addponit

(int x,

int y)

newpoint-

>next = phead;

phead = newpoint;

// 更新頭部

wall.

setwall

(phead-

>x, phead-

>y,

'@')

;gotoxy1

(hout1, phead-

>y *

2, phead-

>x)

; cout <<

"@";

}// 刪除節點 - 刪除最後乙個節點

void snake::

delpoint()

point * ppre = phead;

point * pcur = phead-

>next;

while

(pcur-

>next !=

null

)// 刪除尾節點

wall.

setwall

(pcur-

>x, pcur-

>y,

' ')

;gotoxy1

(hout1, pcur-

>y *

2, pcur-

>x)

; cout <<

' ';

delete pcur;

pcur =

null

; ppre-

>next =

null;}

bool snake::

move

(char key)

// 判斷 如果下一步碰到的是尾巴 不應該死亡

point * pcur = phead-

>next;

point * ppre = phead;

while

(pcur-

>next !=

null)if

(pcur-

>x == x && pcur-

>y == y)

else

}// 移動成功分兩種

// 吃到食物 未吃到食物

if(wall.

getwall

(x, y)

=='#'

)else

}return

true;}

int snake::

getsleeptime()

else

if(size >=

5<=9)

else

return sleeptime;

}int snake::

countlist()

return size;

}int snake::

getscore()

food.h
#pragma once

#include

#include

"wall.h"

#include

using

namespace std;

class

food

;

food.cpp
#include

"food.h"

void

gotoxy2

(handle hout2,

int x,

int y)

handle hout2 =

getstdhandle

(std_output_handle)

;// 定義顯示器控制代碼變數

food::

food

(wall &tmpwall)

:wall

(tmpwall)

void food::

setfood()

}}

game.cpp
#define _crt_secure_no_warnings

#include

using

namespace std;

#include

"wall.h"

#include

"snake.h"

#include

"food.h"

#include

"ctime"

#include

"conio.h"

#include

void

gotoxy

(handle hout,

int x,

int y)

handle hout =

getstdhandle

(std_output_handle)

;// 定義顯示器控制代碼變數

intmain()

doelse

if(snake.

move

(key)

==true

)else

}else

}while(!

_kbhit()

);// _kbhit() 在沒有鍵盤輸入的時候 返回為 0

}system

("pause");

return exit_success;

}

C 案例 貪吃蛇

牆壁 蛇 食物 牆壁模組 pragma once include include include include using namespace std class wall 初始化牆壁 void wallinit 顯示牆壁 void showwall 設定牆壁內同 void setwall int...

貪吃蛇案例

貪吃蛇大戰 開始暫停 重新整理分數 wrap div1 btn1 btn2 btn3 btn4 建立地圖 var map 01 建立食物 var food 01 建立蛇 var snake 01 var times 0 var speed prompt 請選擇適合自己的速度程度 1,2,3 if s...

貪吃蛇案例

html food.js 食物函式 function window var arr food.prototype.init function map food.prototype.render function map function remove 頭和身體的縱座標是一樣的 把資料放在物件裡,用的...