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 頭和身體的縱座標是一樣的 把資料放在物件裡,用的...