114培訓(xùn)網(wǎng)歡迎您來到上海湖畔國(guó)際藝術(shù)設(shè)計(jì)教研基地中心!

15757356768

全國(guó)統(tǒng)一學(xué)習(xí)專線 9:00-21:00

貪吃蛇幼兒園體育游戲設(shè)計(jì)

【游戲名稱】:

貪吃蛇

【游戲目標(biāo)】:

1、幼兒排成一隊(duì)一個(gè)跟著一個(gè)走

2、在行走的過程中不碰到障礙物,鍛煉幼兒身體的靈敏度

【游戲玩法】:

在寬闊的場(chǎng)地隨意擺放障礙物(比如用廢棄的'禮品盒),請(qǐng)參加游戲的小朋友分散站到場(chǎng)地中,幼兒分成兩組游戲。請(qǐng)兩名名小朋友當(dāng)蛇頭繞著障礙走,遇到場(chǎng)地中的小朋友輕輕摸下頭,被摸頭的小朋友隨即跟到蛇頭后面,繼續(xù)繞障礙物走,直至將所有的小朋友邀請(qǐng)到隊(duì)伍中來走出場(chǎng)地一隊(duì)為勝。

【游戲規(guī)則】:

1、幼兒要一個(gè)跟著一個(gè)走(或是抓住前面幼兒的衣服下擺)不能掉隊(duì)

2、行走過程中不能碰到障礙物,蛇頭不能碰到蛇身、蛇尾,碰到者將退出隊(duì)伍回到場(chǎng)地,等待再次蛇頭邀請(qǐng)

3、每組的蛇頭要將自己組的小朋友都邀請(qǐng)進(jìn)隊(duì)伍才能出場(chǎng)地

貪吃蛇游戲設(shè)計(jì)的目的及內(nèi)容

主要內(nèi)容就是設(shè)計(jì)蛇的形狀和方向,以及食物的產(chǎn)生與位置,先創(chuàng)建一個(gè)Point對(duì)象point,由多個(gè)point 組合成蛇身,當(dāng)蛇吃到食物時(shí),則增加一個(gè)point在蛇身上,使蛇身不斷加長(zhǎng),同時(shí)利用隨機(jī)函數(shù)在游戲面板上產(chǎn)生一個(gè)新的Food對(duì)象代替原來被“吃掉”的food,其次,玩家使用方向鍵來控制蛇的行進(jìn),當(dāng)蛇吃到 food 就給玩家加分作為獎(jiǎng)勵(lì),*就可以得出用戶的分?jǐn)?shù)。
設(shè)計(jì)的目的在于學(xué)習(xí)Java程序設(shè)計(jì)基本技術(shù),學(xué)習(xí)用MyEclipse開發(fā)Java程序的相關(guān)技術(shù),以及熟悉項(xiàng)目開發(fā)的完整過程。學(xué)會(huì)怎樣進(jìn)行一個(gè)項(xiàng)目的需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)等軟件開發(fā)過程,熟練地掌握J(rèn)ava程序設(shè)計(jì)的基本技術(shù)和方法,以及熟練地掌握MyEclipse開發(fā)環(huán)境的使用方法,培養(yǎng)初步的項(xiàng)目分析能力和程序設(shè)計(jì)能力。
游戲?qū)崿F(xiàn)的具體任務(wù)如下:
1) 游戲的開始,停止,暫停,繼續(xù)。 根據(jù)用戶單擊的按鈕(開始,停止,暫停,繼續(xù)),游戲?qū)崿F(xiàn)具體相應(yīng)的功能。
2) 游戲難度的調(diào)整。 用戶可以通過選擇相應(yīng)難度地形來設(shè)置游戲的難度級(jí)別,級(jí)別越高,游戲難度也越大。
3) 游戲幫助。單擊游戲幫助按鈕彈出一個(gè)消息框提供相應(yīng)的游戲介紹。另外在游戲中提供了網(wǎng)格對(duì)每一塊小方塊進(jìn)行包裹,玩家可以選擇是否顯示網(wǎng)格,可以幫助剛?cè)腴T的玩家比對(duì)蛇頭與食物的位置。
4) 蛇身和背景顏色的設(shè)置??梢酝ㄟ^單擊相應(yīng)的設(shè)置按鈕讓蛇身或背景的顏色以用戶喜歡的顏色輸出。另外如果玩家選擇顯示網(wǎng)格,也可以單擊相應(yīng)按鈕設(shè)置網(wǎng)格線的顏色。
5) 游戲獎(jiǎng)勵(lì)。當(dāng)蛇吃到一顆食物時(shí)則得到10分作為獎(jiǎng)勵(lì),同時(shí)如果吃到
特殊的食物則會(huì)得到普通食物三倍的獎(jiǎng)勵(lì)。但特殊的食物會(huì)在一定時(shí)間內(nèi)自動(dòng)消失。

課程設(shè)計(jì):使用制作一個(gè)網(wǎng)頁上的貪吃蛇游戲

<html>
<head>
<title>貪吃蛇 Snake v2.4</title>
<style>
body{
font-size:9pt;
}
table{
border-collapse: collapse;
border:solid #333 1px;
}
td{
height: 10px;
width: 10px;
font-size: 0px;
}
.filled{
-color:blue;
}
</style>
</head>
<script>
function $(id){return document.(id);}
/**************************************************************
* 貪吃蛇 v2.4 <br />
* author: 05/14/2009<br />
* 轉(zhuǎn)載請(qǐng)注明來自 謝謝!<br />
* v2.4修正了蛇身顏色可以隨著蛇前進(jìn)而移動(dòng)
**************************************************************/
//貪吃蛇類
var Snake = {
tbl: null,
/**
* body: 蛇身,數(shù)組放蛇的每一節(jié),
* 數(shù)據(jù)結(jié)構(gòu){x:x0, y:y0, color:color0},
* x,y表示坐標(biāo),color表示顏色
**/
body: [],
//當(dāng)前移動(dòng)的方向,取值0,1,2,3, 分別表示向上,右,下,左, 按鍵盤方向鍵可以改變它
direction: 0,
//定時(shí)器
timer: null,
//速度
speed: 250,
//是否已經(jīng)暫停
paused: true,
//行數(shù)
rowCount: 30,
//列數(shù)
colCount: 30,
//初始化
init: function(){
var colors = ['red','orange','yellow','green','blue','purple','#ccc'];
this.tbl = $("main");
var x = 0;
var y = 0;
var = 0;
//產(chǎn)生初始移動(dòng)方向
this.direction = Math.floor(Math.random()*4);
//構(gòu)造table
for(var row=0;row<this.rowCount;row++){
var tr=this.tbl.insertRow(-1);
for(var col=0;col<this.colCount;col++) {
var td=tr.(-1);
}
}
//產(chǎn)生20個(gè)松散節(jié)點(diǎn)
for(var i=0; i<10; i++){
x = Math.floor(Math.random()*this.colCount);
y = Math.floor(Math.random()*this.rowCount);
= Math.floor(Math.random()*7);
if(!this.(x,y)){
this.tbl.rows[y].cells[x].style. = colors[];
}
}
//產(chǎn)生蛇頭
while(true){
x = Math.floor(Math.random()*this.colCount);
y = Math.floor(Math.random()*this.rowCount);
if(!this.(x,y)){
this.tbl.rows[y].cells[x].style. = "black";
this.body.push({x:x,y:y,color:'black'});
break;
}
}
this.paused = true;
//添加鍵盤事件
document.onkeydown= function(e){
if (!e)e=window.event;
switch(e.keyCode | e.which | e.charCode){
case 13: {
if(Snake.paused){
Snake.move();
Snake.paused = false;
}
else{
//如果沒有暫停,則停止移動(dòng)
Snake.pause();
Snake.paused = true;
}
break;
}
case 37:{//left
//阻止蛇倒退走
if(Snake.direction==1){
break;
}
Snake.direction = 3;
break;
}
case 38:{//up
//快捷鍵在這里起作用
if(event.ctrlKey){
Snake.speedUp(-20);
break;
}
if(Snake.direction==2){//阻止蛇倒退走
break;
}
Snake.direction = 0;
break;
}
case 39:{//right
if(Snake.direction==3){//阻止蛇倒退走
break;
}
Snake.direction = 1;
break;
}
case 40:{//down
if(event.ctrlKey){
Snake.speedUp(20);
break;
}
if(Snake.direction==0){//阻止蛇倒退走
break;
}
Snake.direction = 2;
break;
}
}
}
},
//移動(dòng)
move: function(){
this.timer = (function(){
Snake.erase();
Snake.();
Snake.paint();
}, this.speed);
},
//移動(dòng)一節(jié)身體
: function(){
if(this.()==-1){
(this.timer);
alert("Game over!nPress Restart to continue.");
return;
}
if(this.()==1){
var _point = this.();
var _x = _point.x;
var _y = _point.y;
var _color = this.getColor(_x,_y);
this.body.unshift({x:_x,y:_y,color:_color});
//因?yàn)槌粤艘粋€(gè)食物,所以再產(chǎn)生一個(gè)食物
this.();
return;
}
//window.status = this.toString();
var point = this.();
//保留*節(jié)的顏色
var color = this.body[0].color;
//顏色向前移動(dòng)
for(var i=0; i<this.body.length-1; i++){
this.body[i].color = this.body[i+1].color;
}
//蛇尾減一節(jié), 蛇尾加一節(jié),呈現(xiàn)蛇前進(jìn)的效果
this.body.pop();
this.body.unshift({x:point.x,y:point.y,color:color});
//window.status = this.toString();
},
//探尋下一步將走到什么地方
pause: function(){
(Snake.timer);
this.paint();
},
: function(){
var x = this.body[0].x;
var y = this.body[0].y;
var color = this.body[0].color;
//向上
if(this.direction==0){
y--;
}
//向右
else if(this.direction==1){
x++;
}
//向下
else if(this.direction==2){
y++;
}
//向左
else{
x--;
}
//返回一個(gè)坐標(biāo)
return {x:x,y:y};
},
//檢查將要移動(dòng)到的下一步是什么
: function(){
var point = this.();
var x = point.x;
var y = point.y;
if(x<0||x>=this.colCount||y<0||y>=this.rowCount){
return -1;//觸邊界,游戲結(jié)束
}
for(var i=0; i<this.body.length; i++){
if(this.body[i].x==x&&this.body[i].y==y){
return -1;//碰到自己的身體,游戲結(jié)束
}
}
if(this.(x,y)){
return 1;//有東西
}
return 0;//空地
},
//擦除蛇身
erase: function(){
for(var i=0; i<this.body.length; i++){
this.eraseDot(this.body[i].x, this.body[i].y);
}
},
//繪制蛇身
paint: function(){
for(var i=0; i<this.body.length; i++){
this.paintDot(this.body[i].x, this.body[i].y,this.body[i].color);
}
},
//擦除一節(jié)
eraseDot: function(x,y){
this.tbl.rows[y].cells[x].style. = "";
},
paintDot: function(x,y,color){
this.tbl.rows[y].cells[x].style. = color;
},
//得到一個(gè)坐標(biāo)上的顏色
getColor: function(x,y){
return this.tbl.rows[y].cells[x].style.;
},
//用于調(diào)試
toString: function(){
var str = "";
for(var i=0; i<this.body.length; i++){
str += "x:" + this.body[i].x + " y:" + this.body[i].y + " color:" + this.body[i].color + " - ";
}
return str;
},
//檢查一個(gè)坐標(biāo)點(diǎn)有沒有被填充
: function(x,y){
if(this.tbl.rows[y].cells[x].style. == ""){
return false;
}
return true;
},
//重新開始
restart: function(){
if(this.timer){
(this.timer);
}
for(var i=0; i<this.rowCount;i++){
this.tbl.deleteRow(0);
}
this.body = [];
this.init();
this.speed = 250;
},
//加速
speedUp: function(time){
if(!this.paused){
if(this.speed+time<10||this.speed+time>2000){
return;
}
this.speed +=time;
this.pause();
this.move();
}
},
//產(chǎn)生食物。
: function(){
var colors = ['red','orange','yellow','green','blue','purple','#ccc'];
var x = Math.floor(Math.random()*this.colCount);
var y = Math.floor(Math.random()*this.rowCount);
var = Math.floor(Math.random()*7);
if(!this.(x,y)){
this.tbl.rows[y].cells[x].style. = colors[];
}
}
};
</script>
<body onload="Snake.init();">
/*************************************************************<br />
* 貪吃蛇 v2.4<br />
* author: 05/14/2009<br />
* 轉(zhuǎn)載請(qǐng)注明來自 <a href=" 謝謝!<br />
**************************************************************/<br />
<table id="main" border="1" ="0" ="0"></table>
<input type="button" id="btn" value="開始/暫停" />點(diǎn)左邊按鈕或按Enter開始/暫停游戲<br />
<input type="button" id="reset" value="重新開始" /><br />
<input type="button" id="upSpeed" value="加速" />點(diǎn)左邊按鈕或按Ctrl + ↑加速<br />
<input type="button" id="downSpeed" value="減速" />點(diǎn)左邊按鈕或按Ctrl + ↓減速
<script>
$('btn').onclick = function(){
if(Snake.paused){
Snake.move();
Snake.paused = false;
}
else{
Snake.pause();
Snake.paused = true;
}
};
$("reset").onclick = function(){
Snake.restart();
this.blur();
};
$("upSpeed").onclick = function(){
Snake.speedUp(-20);
};
$("downSpeed").onclick = function(){
Snake.speedUp(20);
};
</script>
</body>
</html>

C語言課程設(shè)計(jì) 貪吃蛇

2.1程序功能介紹

貪吃蛇游戲是一個(gè)經(jīng)典小游戲,一條蛇在封閉圍墻里,圍墻里隨機(jī)出現(xiàn)一個(gè)食物,通過按鍵盤四個(gè)光標(biāo)鍵控制蛇向上下左右四個(gè)方向移動(dòng),蛇頭撞倒食物,則食物被吃掉,蛇身體長(zhǎng)一節(jié),同時(shí)記10分,接著又出現(xiàn)食物,等待蛇來吃,如果蛇在移動(dòng)中撞到墻或身體交叉蛇頭撞倒自己身體游戲結(jié)束。

2.2程序整體設(shè)計(jì)說明

一個(gè)游戲要有開始部分,運(yùn)行部分,結(jié)束部分(實(shí)際上開始部分與運(yùn)行部分是一體的)。

2.2.1設(shè)計(jì)思路

這個(gè)程序的關(guān)鍵是表示蛇的圖形以及蛇的移動(dòng)。用一個(gè)小矩形表示蛇的一節(jié)身體,身體每長(zhǎng)一節(jié),增加一個(gè)矩形塊,蛇頭用兩節(jié)表示。移動(dòng)時(shí)必須從蛇頭開始,所以蛇不能向相反方向移動(dòng),也就是蛇尾不能改作蛇頭。如果不按任何鍵,蛇自行在當(dāng)前方向上前移,當(dāng)游戲者按了有效的方向鍵后,蛇頭朝著指定的方向移動(dòng),一步移動(dòng)一節(jié)身體,所以當(dāng)按了有效的方向鍵后,先確定蛇頭的位置,然后蛇身體隨著蛇頭移動(dòng),圖形的實(shí)現(xiàn)是從蛇頭的新位置開始畫出蛇,這時(shí)由于沒有慶平的原因,原來蛇的位置和新蛇的位置差一個(gè)單位,所以看起來社會(huì)多一節(jié)身體,所以將蛇的*一節(jié)用背景色覆蓋。食物的出現(xiàn)和消失也是畫矩形塊和覆蓋矩形塊

2.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說明

開始部分:

游戲是運(yùn)行在圖形模式下的,所以*步一定是初始化圖形模式,接著要有開始的界面,就像書有封面一樣,我設(shè)置了一個(gè)游戲的標(biāo)題畫面,除了游戲標(biāo)題畫面我還設(shè)置了一個(gè)歡迎畫面。標(biāo)題畫面以后,還要為游戲的運(yùn)行部分作初始化,包括繪制游戲運(yùn)行時(shí)的背景,對(duì)游戲某些重 要變量的初始化。

運(yùn)行部分:

作為游戲的核心部分,這里包括的函數(shù)比較多,也就是模塊比較多,首先讓我模擬一下貪吃蛇的游戲模式:某個(gè)世界上突然出現(xiàn)一條蛇,它很短,它的運(yùn)動(dòng)神經(jīng)異常,它沒法停止自己的多動(dòng)癥在它的世界里就只有食物,它很餓,也很貪吃;同樣在不明原因的情況下,食物從天而降,可惜的是沒有落到嘴邊;饑餓的主人公,不管它有沒有毒,也不問食物的來歷,徑直向食物爬去;它吃到食物啦,它超出想象的同化能力讓食物很快的成為自己身體的一部分,它的身子變長(zhǎng)啦。當(dāng)它吃到*顆食物時(shí),上帝有給它第二顆,于是它吃了第二顆,于是又變長(zhǎng)了,于是又有第三顆……它的身子是一直的加長(zhǎng),它不管自己過長(zhǎng)身體的麻煩——轉(zhuǎn)身不便,繼續(xù)吃下去,現(xiàn)在它是直接把巴張大,好讓食物有個(gè)綠色通道。但是在某天的下午,它咬到了自己,它才想起自己是一條毒蛇,于是暈死過去(不是毒死);又或者它往食物沖鋒的時(shí)候,它失去控制,撞到了墻上。

*輪循環(huán):*步,出現(xiàn)食物;第二步,蛇不停運(yùn)動(dòng);第三步,檢查蛇是撞到自己或墻壁;由第四步起游戲有兩條支線(A、B):

A :第四步,蛇沒有碰到自己或墻壁,蛇繼續(xù)前進(jìn),繪制蛇的動(dòng)作;第五步,判斷蛇是否吃到食物,如果蛇吃到食物,身子變長(zhǎng),原來的食物消失;第六步,讓玩家輸入控制指令,讓蛇在下一輪循環(huán)的第二步改變運(yùn)動(dòng)方向;第七步,第二輪循環(huán)的*步,重復(fù)*輪的步驟;

B:第四步,蛇碰到自己或墻壁,終止游戲。

結(jié)束部分:

游戲結(jié)束時(shí),顯示“GAME OVER”,已經(jīng)是約定俗成的規(guī)律了,我的游戲也不例外。除了游戲結(jié)束畫面外,我還設(shè)置了一個(gè)游戲退出畫面,“善始善終”嘛。

有了上述的大致劃分,我把整個(gè)程序劃分成(13+2)個(gè)模塊(其實(shí)就是函數(shù))

2.2.3程序結(jié)構(gòu)(流程圖)

圖2.1流程圖

依據(jù)所需要處理的任務(wù)要求,規(guī)劃輸入數(shù)據(jù)和輸出結(jié)果,決定存放數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。

C語言中數(shù)據(jù)結(jié)構(gòu)集中體現(xiàn)在數(shù)據(jù)類型上,因此在進(jìn)行C語言程序設(shè)計(jì)時(shí),應(yīng)統(tǒng)籌規(guī)劃程序中所使用的變量,數(shù)組,指針等,以及它們的類型等。這點(diǎn)是很重要的,如果在此期間選擇不合適的變量或者數(shù)組,將來修改就十分困難。

現(xiàn)在分析一下貪吃蛇游戲中的元素,繼而得出與它們對(duì)應(yīng)的在程序中的描述:

蛇:

基本描述:長(zhǎng)度,顏色,位置。

對(duì)應(yīng)數(shù)據(jù)與數(shù)據(jù)類型:長(zhǎng)度—雖然可以用坐標(biāo)表示,但是這樣的話,運(yùn)算量將很大,所以換算成較大的單位—節(jié)數(shù),以固定長(zhǎng)度的每節(jié)描述;坐標(biāo)--整型;顏色--整型; 位置--X,Y坐標(biāo)。

增加的描述:蛇運(yùn)動(dòng)的方向,蛇的生命。

對(duì)應(yīng)數(shù)據(jù)與數(shù)據(jù)類型:這些描述是為了與程序的按鍵的輸入部分與判斷游戲結(jié)束部分相聯(lián)系而設(shè)的。方向只有四個(gè)方向:上下左右。可以設(shè)置與之對(duì)應(yīng)的四個(gè)整型數(shù):3、4、2、1。生命就只有兩種情況:死或生,對(duì)應(yīng)0或1。

食物:

基本描述:顏色,位置。

對(duì)應(yīng)數(shù)據(jù)與數(shù)據(jù)類型:由于顏色設(shè)成固定的,所以不再討論。位置—X、Y坐標(biāo)。

增加的描述:食物的存在。

對(duì)應(yīng)數(shù)據(jù)與數(shù)據(jù)類型:這是為了避免重復(fù)出現(xiàn)食物而設(shè)置的,與繪制食物的函數(shù)有聯(lián)系。只有兩個(gè)值:0或1(沒有食物或有食物)

其他的元素:墻,由于它在顯示上是作為背景而存在的,所以并沒有什么說明實(shí)際的墻壁就是四條直線組成的邊框,由坐標(biāo)描述。

還需要的變量:鍵盤鍵入的鍵值(作為全局變量,整型);經(jīng)常要使用的循環(huán)變量;自定義的填充圖案;說明文字的字符數(shù)組;游戲的記分;游戲的速度(蛇的速度)。

圖2.2蛇的不停運(yùn)動(dòng)的關(guān)鍵算法的流程圖

2.2.4各模塊的功能及程序說明

主要模塊的實(shí)現(xiàn)思路和算法的流程圖說明:

關(guān)鍵所在——蛇不停移動(dòng)的Snakemove():

蛇的不停移動(dòng),就是蛇的下一節(jié)取代前一節(jié)的位置,在計(jì)算機(jī)中就是蛇下一節(jié)的位置坐標(biāo)變成前一節(jié)的位置坐標(biāo)。在上文中,已定義蛇的位置坐標(biāo)為數(shù)組類型,一組坐標(biāo)對(duì)應(yīng)一節(jié)的位置,假設(shè)有i+1節(jié),由0到i節(jié),第i節(jié)的坐標(biāo)取第i-1節(jié)的坐標(biāo),第i-1節(jié)的坐標(biāo)取第i-2節(jié)的坐標(biāo)……直到第1節(jié)取第0節(jié)的坐標(biāo)。而第0節(jié)的坐標(biāo),即蛇頭的坐標(biāo)要往某個(gè)方向變化,變化量為蛇每節(jié)的長(zhǎng)度。蛇的這種坐標(biāo)輪換需要循環(huán)語句使其繼續(xù)下去。

2.2.5程序結(jié)果

運(yùn)行程序得到如下初始界面圖:

圖2.3程序結(jié)果圖

用一個(gè)小矩形表示蛇的一節(jié)身體,身體每長(zhǎng)一節(jié),增加一個(gè)矩形塊,蛇頭用兩節(jié)表示:

圖2.4程序結(jié)果圖

蛇沒有碰到自己或墻壁,蛇繼續(xù)前進(jìn):

圖2.5程序結(jié)果圖

游戲結(jié)束時(shí),顯示“GAME OVER”

圖2.6程序結(jié)果圖

2.3程序源代碼及注釋

#define N 200

#include <graphics.h>

#include <stdlib.h>

#include <dos.h>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

int i,key;

int score=0;/*得分*/

int gamespeed=50000;/*游戲速度自己調(diào)整*/

struct Food{

int x;/*食物的橫坐標(biāo)*/

int y;/*食物的縱坐標(biāo)*/

int yes;/*判斷是否要出現(xiàn)食物的變量*/

}food;/*食物的結(jié)構(gòu)體*/

struct Snake{

int x[N];

int y[N];

int node;/*蛇的節(jié)數(shù)*/

int direction;/*蛇移動(dòng)方向*/

int life;/* 蛇的生命,0活著,1死亡*/

}snake;

void Init(void);/*圖形驅(qū)動(dòng)*/

void Close(void);/*圖形結(jié)束*/

void DrawK(void);/*開始畫面*/

void GameOver(void);/*結(jié)束游戲*/

void GamePlay(void);/*玩游戲具體過程*/

void PrScore(void);/*輸出成績(jī)*/

/*主函數(shù)*/

void main(void){

Init();/*圖形驅(qū)動(dòng)*/

DrawK();/*開始畫面*/

GamePlay();/*玩游戲具體過程*/

Close();/*圖形結(jié)束*/}

/*圖形驅(qū)動(dòng)*/

void Init(void){

int gd=DETECT,gm;

(EGAVGA_driver);

initgraph(&gd,&gm,"c:\program files\winyes\tc20h\bgi");

();}

/*開始畫面,左上角坐標(biāo)為(50,40),右下角坐標(biāo)為(610,460)的圍墻*/

void DrawK(void){

/*();*/

setcolor(11);

(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/

for(i=50;i<=600;i+=10)/*畫圍墻*/ ? {

rectangle(i,40,i+10,49); /*上邊*/

rectangle(i,451,i+10,460);/*下邊*/ ? }

for(i=40;i<=450;i+=10) ?{

rectangle(50,i,59,i+10); /*左邊*/

rectangle(601,i,610,i+10);/*右邊*/ }}

/*玩游戲具體過程*/

void GamePlay(void){

randomize();/*隨機(jī)數(shù)發(fā)生器*/

food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/

snake.life=0;/*活著*/

snake.direction=1;/*方向往右*/

snake.x[0]=100;snake.y[0]=100;/*蛇頭*/

snake.x[1]=110;snake.y[1]=100;

snake.node=2;/*節(jié)數(shù)*/

PrScore();/*輸出得分*/

while(1)/*可以重復(fù)玩游戲,壓ESC鍵結(jié)束*/ ? {

while(!kbhit())/*在沒有按鍵的情況下,蛇自己移動(dòng)身體*/ ? ? ?{

if(food.yes==1)/*需要出現(xiàn)新食物*/ ? ? {

food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x%10!=0)/*食物隨機(jī)出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;/*畫面上有食物了*/ ? ? }

if(food.yes==0)/*畫面上有食物了就要顯示*/ ? ? {

setcolor(GREEN);

rectangle(food.x,food.y,food.x+10,food.y-10); ? ? }

for(i=snake.node-1;i>0;i--)/*蛇的每個(gè)環(huán)節(jié)往前移動(dòng),也就是貪吃蛇的關(guān)鍵算法*/ ? ? ? ? {

snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1]; ? ? }

/*1,2,3,4表示右,左,上,下四個(gè)方向,通過這個(gè)判斷來移動(dòng)蛇頭*/

switch(snake.direction) ? ? {

case 1:snake.x[0]+=10;break;

case 2: snake.x[0]-=10;break;

case 3: snake.y[0]-=10;break;

case 4: snake.y[0]+=10;break; ? ? }

for(i=3;i<snake.node;i++)/*從蛇的第四節(jié)開始判斷是否撞到自己了,因?yàn)樯哳^為兩節(jié),第三節(jié)不可能拐過來*/ ? ? {

if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]) ? ? ? ?{

GameOver();/*顯示失敗*/

snake.life=1;

break; ? ? ? ?} ? ? ? ?}

if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||

snake.y[0]>455)/*蛇是否撞到墻壁*/ ? ?{

GameOver();/*本次游戲結(jié)束*/

snake.life=1; /*蛇死*/ ? ?}

if(snake.life==1)/*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始*/

break;

if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/ ? ?{

setcolor(0);/*把畫面上的食物東西去掉*/

rectangle(food.x,food.y,food.x+10,food.y-10);

snake.x[snake.node]=-20;snake.y[snake.node]=-20;

/*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/

snake.node++;/*蛇的身體長(zhǎng)一節(jié)*/

food.yes=1;/*畫面上需要出現(xiàn)新的食物*/

score+=10;

PrScore();/*輸出新得分*/ ? ?}

setcolor(4);/*畫出蛇*/

for(i=0;i<snake.node;i++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,

snake.y[i]-10);

delay(gamespeed);

setcolor(0);/*用黑色去除蛇的的*一節(jié)*/

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],

snake.x[snake.node-1]+10,snake.y[snake.node-1]-10); ? ? } ?/*endwhile(!kbhit)*/

if(snake.life==1)/*如果蛇死就跳出循環(huán)*/

break;

key=bioskey(0);/*接收按鍵*/

if(key==ESC)/*按ESC鍵退出*/

break;

else

if(key==UP&&snake.direction!=4)

/*判斷是否往相反的方向移動(dòng)*/

snake.direction=3;

else

if(key==RIGHT&&snake.direction!=2)

snake.direction=1;

else

if(key==LEFT&&snake.direction!=1)

snake.direction=2;

else

if(key==DOWN&&snake.direction!=3)

snake.direction=4;

}/*endwhile(1)*/}

/*游戲結(jié)束*/

void GameOver(void){

();

PrScore();

setcolor(RED);

(0,0,4);

outtextxy(200,200,"GAME OVER");

getch();}

/*輸出成績(jī)*/

void PrScore(void){

char str[10];

(SOLID_FILL,YELLOW);

bar(50,15,220,35);

setcolor(6);

(0,0,2);

sprintf(str,"score:%d",score);

outtextxy(55,20,str);}

/*圖形結(jié)束*/

void Close(void){

getch();

();

}

3000多學(xué)生課間操玩真人版貪吃蛇,貪吃蛇的游戲規(guī)則是什么?

我們都知道,最近有一個(gè)熱搜引起了人們的熱議,那就是在某個(gè)地方的一個(gè)中學(xué),他們課間操的時(shí)候3000多名學(xué)生在操場(chǎng)上面玩真人版貪吃蛇,真的讓人覺得非常的羨慕。其實(shí)貪吃蛇這個(gè)游戲很多人從小就知道該怎么玩了,它的游戲規(guī)則也是非常簡(jiǎn)單的。

一、貪吃蛇的規(guī)則是非常簡(jiǎn)單的。

其實(shí)貪吃蛇的游戲規(guī)則非常的簡(jiǎn)單,幾乎沒有什么技術(shù)含量,就是你控制這個(gè)蛇的身體,然后不斷地吃著食物,然后這個(gè)蛇會(huì)變得越來越長(zhǎng),但是前提就是你的蛇頭和蛇尾以及自己的身子不能夠撞到一起,不然的話就會(huì)游戲失敗。貪吃蛇的規(guī)則是非常簡(jiǎn)單的,很多孩子在最初玩游戲的時(shí)候就從想貪吃蛇這樣的游戲開始玩起的,所以如果說讓大家長(zhǎng)大之后在玩貪吃蛇,這個(gè)游戲會(huì)讓人覺得非常的懷念。

二、這個(gè)學(xué)校通過大課間的這種活動(dòng),增進(jìn)了學(xué)生們之間的友誼,而且讓他們變得非常的快樂。

這個(gè)學(xué)校通過大課間的這種活動(dòng),增進(jìn)了學(xué)生們之間的友誼,而且讓他們變得非常的快樂。要知道這種整個(gè)學(xué)校參與進(jìn)來的游戲最能夠帶動(dòng)所有人的氣氛??梢钥吹綇母┮暤慕嵌瓤吹侥切W(xué)生們的隊(duì)伍越來越長(zhǎng),看到他們臉上的那種笑容,讓他們短暫的忘記了學(xué)習(xí)上的壓力。

三、高中學(xué)生的壓力*,能夠讓學(xué)生們緊繃的情緒得到放松真的是一件非常好的事情。

其實(shí)要說哪些學(xué)生的壓力*,那就是高中學(xué)生的壓力*。大家都知道高中的學(xué)生,他們的課業(yè)壓力非常的大,他們需要在短短兩年的時(shí)間內(nèi)學(xué)完整個(gè)高中三年的課程,而且還要面對(duì)各種大大小小的考試。其實(shí)很多學(xué)生在生上高中的時(shí)候就有一種力不從心的感覺了。首先學(xué)習(xí)的科目變得很多,而且難度也非常的大,很多學(xué)生都跟不上進(jìn)度,而且每天都處于寫不完作業(yè)的狀態(tài)。在這樣的情況下,能夠讓學(xué)生們緊繃的情緒得到放松真的是一件非常好的事情。

綜上,我們可以發(fā)現(xiàn),這個(gè)學(xué)校能夠在大課前讓學(xué)生們快樂的玩耍,真的是非常好的事情。對(duì)此,你有什么其他的看法?可以在評(píng)論區(qū)里說一下,大家一起來討論一下。

如何用java實(shí)現(xiàn)一個(gè)貪吃蛇小游戲?

1、設(shè)計(jì)游戲,首先就要設(shè)計(jì)界面。首先看一下我設(shè)計(jì)的一個(gè)界面。界面分為左邊的游戲區(qū)與右邊的控制區(qū)。游戲區(qū)包含“得分信息”和貪吃蛇的游戲區(qū),右邊控制區(qū)有“開始”“暫停”“停止”按鈕,等級(jí)選擇單選框以及游戲排行榜。


2、所以我們需要定義swing組件,并在類初始化時(shí)初始化這些組件,添加組件。因?yàn)楹竺嬖O(shè)計(jì)游戲的時(shí)候,我們要確切知道游戲區(qū)的大小,所以這里設(shè)置游戲區(qū)固定大小值。本來想用布局來更好的管理,但作者對(duì)布局也掌握不夠,所以就先設(shè)置固定大小吧。


3、定義我們的游戲。貪吃蛇游戲其實(shí)就是包含很多細(xì)小網(wǎng)格,然后蛇在網(wǎng)格中移動(dòng)。蛇由一連串的網(wǎng)格組成,為了視覺效果,蛇身用藍(lán)色標(biāo)記,食物用紅色標(biāo)記,背景白色。如*張圖片所示。所以,我們需要定義二維數(shù)組,保存網(wǎng)格信息,保存蛇身和食物的位置信息等。初始化時(shí),還需要添加鍵盤事件控制上下左右移動(dòng)。



4、食物的位置信息是二維的,所以我簡(jiǎn)單定義了一個(gè)類用來保存二維信息。

5、接著就是實(shí)現(xiàn)游戲的功能了。開始,暫停,停止按鈕添加事件控制游戲開始。等級(jí)按鈕定義游戲難度等。


6、開始游戲后,我們定義一個(gè)定時(shí)器。蛇身按照指定的方向移動(dòng),方向是通過初始化時(shí)添加的鍵盤事件,鍵盤的上下左右按鈕來控制。蛇身是連續(xù)的位置信息,保存到隊(duì)列中,所以蛇身的移動(dòng)就是隊(duì)首增加一個(gè)位置,隊(duì)尾減少位置,然后重新繪畫游戲區(qū)就可以了。

scratch貪吃蛇制作教程

scratch貪吃蛇制作教程如下:

1、游戲工作過程。鍵盤主要控制貪吃蛇的頭部移動(dòng),尾巴是沿著軌跡移動(dòng)就行。貪吃蛇的身體,是用程序畫筆模塊畫出來的。如果頭部吃到食物,就給游戲分?jǐn)?shù)加分。

2、創(chuàng)建角色:新建3個(gè)角色分別為“頭部”、“尾巴”、“食物”(貪吃蛇角色的形狀可以自己動(dòng)手畫畫,但是要注意造型的中心點(diǎn)位置,否則身體和頭尾會(huì)不一致)。

3、創(chuàng)建分?jǐn)?shù)變量:新建一個(gè)變量,名稱為“游戲分?jǐn)?shù)”。用來記錄吃到的食物數(shù)量,以及游戲成績(jī)。

4、創(chuàng)建軌跡列表:新建3個(gè)列表,名稱分別為“頭部_坐標(biāo)X”“頭部_坐標(biāo)Y”“頭部_方向”。

用來記錄貪吃蛇的移動(dòng)軌跡,方便尾巴追隨軌跡移動(dòng)(將在舞臺(tái)上的列表隱藏,以免影響舞臺(tái)觀看)。

5、編寫程序

頭部程序:鍵盤控制頭部移動(dòng),畫筆畫下軌跡,并且列表記錄頭部的軌跡。

尾巴程序:按照軌跡列表移動(dòng),畫筆畫下背景色,保持貪吃蛇身體長(zhǎng)度。

食物程序:碰到頭部角色,代表食物被吃,改變自身位置,游戲加分。

6、最終游戲效果:點(diǎn)擊“綠色旗子”開始游戲,按下鍵盤的方向鍵,控制貪吃蛇移動(dòng)。

吃到食物時(shí),變量“游戲分?jǐn)?shù)”就會(huì)加1分。

貪吃蛇游戲選題的目的和意義(含國(guó)內(nèi)外相同領(lǐng)域、同類課題的研究現(xiàn)狀分析)

隨著動(dòng)畫技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)傳播速度越來越快,F(xiàn)lash游戲已經(jīng)成為現(xiàn)在人生活?yuàn)蕵?,打發(fā)時(shí)間,緩解壓力的一項(xiàng)不可或缺的項(xiàng)目。而一個(gè)優(yōu)秀的Flash游戲離不開游戲畫面、程序腳本以及后期音效的共同作用。因此,越來越多有著引人入勝的劇情,豐富有趣的畫面,好聽難忘的音樂的Flash小游戲在互聯(lián)網(wǎng)上被越來越多的玩家喜愛和分享。當(dāng)這些兼具藝術(shù)性與流行性的元素都由一個(gè)游戲組合到一起,人們可以從中得到娛樂和放松,同時(shí)有得到一些對(duì)生活對(duì)人生的啟發(fā),讓人會(huì)心一笑。而創(chuàng)作者也可以選擇不同的風(fēng)格,不同的手法用計(jì)算機(jī)的一系列數(shù)碼藝術(shù)創(chuàng)作手法實(shí)現(xiàn)自己的創(chuàng)意,然后在一些交流互動(dòng)網(wǎng)站上發(fā)表,供他人娛樂或者借鑒,同時(shí)也可以得到廣大互聯(lián)網(wǎng)用戶的意見,從而提高自身的創(chuàng)作水品。
由此可見,F(xiàn)lash游戲設(shè)計(jì)的意義就在于:
集合不同的藝術(shù)門類,把藝術(shù)與技術(shù)相結(jié)合。從而讓人可以在游戲中的到美的享受。
給廣大的互聯(lián)網(wǎng)用戶提供了一個(gè)娛樂,休閑,放松身心的地方。
讓設(shè)計(jì)師之與玩家之間產(chǎn)生交流,從而完善游戲。
操作便捷,文件攜帶方便,無需安裝,符合了現(xiàn)在很多快餐式的生活要求便于大眾隨時(shí)的下載,游戲。
有豐富的圖像,畫面不受軟件的限制。富有創(chuàng)意,風(fēng)格多變。是其他電子游戲沒有的。國(guó)內(nèi)外研究現(xiàn)狀及分析:目前利用Flash開發(fā)出了許多夸平臺(tái)的網(wǎng)絡(luò)游戲,甚至可以匹敵大型MMOR,在3G時(shí)代到來以后,我們很快可以在手機(jī)上玩到大型網(wǎng)絡(luò)游戲,現(xiàn)有的Flash制作網(wǎng)絡(luò)游戲有:SLG類(熱血三國(guó)),體育類(熱血球球),RPG類(凡人修真),桌面(德州撲克),TD類(保衛(wèi)家園)等等.在日本和美國(guó),動(dòng)畫和游戲這一類的技術(shù)超出國(guó)內(nèi)比較多,日本的動(dòng)漫位居世界前列是眾所周知的。要想在這一方面能有所作為,仍需加倍努力。

貪吃蛇 C語言 簡(jiǎn)易程序設(shè)計(jì)

#include<graphics.h>
#include<stdlib.h>
#define N 200
#define up 0x4800
#define down 0x5000
#define left 0x4b00
#define right 0x4d00
#define esc 0x011b
#define Y 0x1579
#define n 0x316e
int gamespeed; /* 游戲速度 */
int i,key,color;
int score=0; /* 游戲分?jǐn)?shù) */
char cai48H[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x04,0x00,0x18,0x00,0x00,0x00,0x0E,0x00,
0x1C,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,
0x00,0x00,0x20,0x00,0x38,0x00,0x00,0x00,
0x40,0x00,0x78,0x00,0x00,0x01,0x80,0x40,
0x70,0x00,0x00,0x03,0x80,0xC0,0xE0,0x00,
0x00,0x07,0x80,0x80,0xC0,0x00,0x00,0x0E,
0x11,0x81,0xC0,0x00,0x00,0x08,0x61,0x01,
0x80,0x00,0x00,0x00,0x23,0x03,0x04,0x00,
0x00,0x02,0x02,0x00,0x06,0x00,0x00,0x1E,
0x04,0x00,0x0F,0x00,0x00,0x1C,0x1F,0x80,
0x1E,0x00,0x00,0x08,0x3F,0x80,0x3C,0x00,
0x00,0x00,0xFF,0x80,0x38,0x00,0x00,0x03,
0xFF,0x80,0x78,0x00,0x00,0x0F,0xF8,0x00,
0xF0,0x00,0x00,0x7F,0xF0,0x00,0xE0,0x00,
0x03,0xFF,0xFC,0x01,0x80,0x00,0x03,0xC0,
0xFF,0x01,0x03,0x80,0x01,0x01,0xFF,0x00,
0x03,0x80,0x00,0x01,0x3F,0x00,0x07,0x80,
0x00,0x02,0x11,0x00,0x07,0x00,0x00,0x00,
0x10,0x00,0x07,0x00,0x00,0x00,0x10,0x00,
0x0E,0x00,0x00,0x08,0x10,0x00,0x1C,0x00,
0x00,0x30,0x10,0x00,0x18,0x00,0x00,0x70,
0x10,0x00,0x30,0x00,0x01,0xE0,0x10,0x00,
0x70,0x00,0x03,0x80,0x10,0x00,0x60,0x00,
0x00,0x00,0x30,0x00,0xE0,0x00,0x00,0x00,
0xF0,0x01,0xC0,0x00,0x00,0x00,0x70,0x03,
0xC0,0x00,0x00,0x00,0x10,0x07,0x80,0x00,
0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,
0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x3C,
0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char she48H[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,
0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,
0x00,0x0E,0x00,0x00,0x00,0x03,0x00,0x07,
0x00,0x00,0x00,0x02,0x00,0x03,0x00,0x00,
0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x02,
0x00,0x00,0xF8,0x00,0x00,0x02,0x00,0x07,
0x86,0x00,0x00,0x02,0x00,0x18,0x03,0x00,
0x00,0x02,0x00,0x00,0x07,0x80,0x00,0x03,
0xF0,0x00,0x07,0x80,0x00,0x0F,0xFC,0x00,
0x0C,0x00,0x00,0x7E,0x3F,0x80,0x00,0x00,
0x01,0xFE,0x1F,0x80,0x00,0x00,0x01,0xE2,
0x39,0x8C,0x00,0x00,0x00,0xC2,0x30,0x08,
0x00,0x00,0x00,0xC2,0x60,0x08,0x00,0x00,
0x00,0xC3,0xE0,0x08,0x60,0x00,0x00,0x7F,
0xE0,0x01,0xE0,0x00,0x00,0x3F,0x80,0x1F,
0xE0,0x00,0x00,0x1E,0x00,0x1F,0x80,0x00,
0x00,0x1E,0x00,0x1F,0x00,0x00,0x00,0x02,
0x38,0x1E,0x00,0x00,0x00,0x07,0xFC,0x1C,
0x00,0x20,0x00,0x07,0xFC,0x18,0x00,0x20,
0x00,0x1F,0x0C,0x10,0x00,0x20,0x00,0x7C,
0x04,0x10,0x00,0x60,0x01,0xF0,0x00,0x10,
0x00,0x60,0x01,0xE0,0x00,0x08,0x00,0xF0,
0x00,0x80,0x00,0x08,0x03,0xF0,0x00,0x00,
0x00,0x07,0xFF,0xF0,0x00,0x00,0x00,0x07,
0xFF,0xF0,0x00,0x00,0x00,0x03,0xFF,0xE0,
0x00,0x00,0x00,0x01,0xFF,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char tun48H[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x3E,
0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,
0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,
0x03,0xC0,0x00,0x00,0x00,0x00,0x1F,0x00,
0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,
0x00,0x01,0xF8,0x00,0x00,0x00,0x00,0x03,
0xF8,0x00,0x40,0x00,0x00,0x00,0x06,0x07,
0xC0,0x00,0x00,0x00,0x07,0xFF,0xE0,0x00,
0x00,0x00,0x07,0xFF,0xE0,0x00,0x00,0x00,
0x0F,0xFF,0x80,0x00,0x00,0x00,0x7F,0xF8,
0x00,0x00,0x00,0x1F,0xFF,0xF8,0x00,0x00,
0x00,0x1F,0xFF,0xF8,0x00,0x00,0x00,0x1F,
0xFC,0x3C,0x00,0x00,0x00,0x0F,0xF8,0x0E,
0x00,0x00,0x00,0x04,0x70,0x07,0x00,0x00,
0x00,0x00,0x60,0x03,0x80,0x00,0x00,0x00,
0xC0,0x00,0xC0,0x00,0x00,0x01,0x80,0x00,
0x30,0x00,0x00,0x01,0x00,0x3C,0x18,0x00,
0x00,0x02,0x03,0xFF,0x0C,0x00,0x00,0x0C,
0x7F,0xFF,0x8E,0x00,0x00,0x18,0xFF,0xFF,
0xC7,0x80,0x00,0x78,0xFE,0x07,0x87,0xE0,
0x01,0xF0,0x70,0x07,0x03,0xF8,0x07,0xE0,
0x70,0x0E,0x03,0xFE,0x00,0x00,0x38,0x1E,
0x01,0xFE,0x00,0x00,0x3F,0xFE,0x00,0x0C,
0x00,0x00,0x1F,0xFE,0x00,0x00,0x00,0x00,
0x1F,0xFE,0x00,0x00,0x00,0x00,0x0F,0xFE,
0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char dan48H[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFC,0x00,0x00,0x00,0x00,0x07,0xFF,
0x00,0x00,0x00,0x00,0x7F,0xC0,0x80,0x00,
0x00,0x03,0xFF,0x80,0x40,0x00,0x00,0x01,
0xF1,0x80,0x40,0x00,0x00,0x01,0x81,0x80,
0xE0,0x00,0x00,0x00,0x01,0x93,0xF0,0x00,
0x00,0x00,0x01,0xFF,0xF0,0x00,0x00,0x00,
0x21,0xFF,0xF0,0x00,0x00,0x00,0x21,0xF8,
0x00,0x00,0x00,0x00,0x61,0xC0,0x00,0x00,
0x00,0x00,0x61,0x80,0x00,0x00,0x00,0x00,
0xF3,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,
0x00,0x00,0x00,0x01,0xFF,0xC0,0x00,0x00,
0x00,0x03,0xFF,0xF8,0x00,0x00,0x00,0x02,
0x00,0xFC,0x00,0x00,0x00,0x04,0x02,0x1F,
0x00,0x00,0x00,0x08,0x03,0x01,0xC0,0x00,
0x00,0x38,0x03,0x00,0x7C,0x00,0x00,0xF8,
0x07,0xF8,0x3F,0xC0,0x01,0xF0,0x3F,0xFE,
0x3F,0xF8,0x03,0xC1,0xFF,0x0F,0x1F,0xF8,
0x00,0x01,0xE3,0x0F,0x0F,0xF0,0x00,0x01,
0xC3,0x0E,0x00,0x00,0x00,0x01,0x83,0xFC,
0x00,0x00,0x00,0x00,0xC7,0xF8,0x00,0x00,
0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x00,
0x7F,0xF0,0x00,0x00,0x00,0x00,0x3F,0x03,
0x80,0x00,0x00,0x00,0x03,0x04,0x00,0x00,
0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x00,
0x1F,0xF8,0x20,0x00,0x00,0x00,0xFF,0xFF,
0xE0,0x00,0x00,0x07,0xFF,0x81,0xE0,0x00,
0x00,0x07,0xE0,0x00,0xE0,0x00,0x00,0x03,
0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char zuo16H[]={
0x18,0xC0,0x18,0xC0,0x19,0x80,0x31,0xFE,
0x33,0xFE,0x76,0xC0,0xF0,0xFC,0xB0,0xFC,
0x30,0xC0,0x30,0xC0,0x30,0xFE,0x30,0xFE,
0x30,0xC0,0x30,0xC0,0x30,0xC0,0x00,0x00,
};
char zhe16H[]={
0x03,0x00,0x03,0x0C,0x1F,0xCC,0x1F,0xD8,
0x03,0x30,0xFF,0xFE,0xFF,0xFE,0x03,0x00,
0x0F,0xF8,0x3F,0xF8,0xEC,0x18,0xCF,0xF8,
0x0C,0x18,0x0F,0xF8,0x0F,0xF8,0x00,0x00,
};
char tian16H[]={
0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x31,0x8C,
0x31,0x8C,0x31,0x8C,0x3F,0xFC,0x3F,0xFC,
0x31,0x8C,0x31,0x8C,0x31,0x8C,0x3F,0xFC,
0x3F,0xFC,0x30,0x0C,0x00,0x00,0x00,0x00,
};
char xue16H[]={
0x33,0x18,0x19,0x98,0x08,0xB0,0x7F,0xFC,
0x7F,0xFC,0x60,0x0C,0x1F,0xF0,0x1F,0xF0,
0x00,0xC0,0x7F,0xFC,0x7F,0xFC,0x01,0x80,
0x01,0x80,0x07,0x80,0x03,0x00,0x00,0x00,
};
char ke16H[]={
0x00,0x00,0x0C,0x18,0xFD,0x98,0xF8,0xD8,
0x18,0x58,0xFE,0x18,0xFE,0x98,0x18,0xD8,
0x3C,0x58,0x7E,0x1E,0xDB,0xFE,0x9B,0xF8,
0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,
};
struct Food/*定義結(jié)構(gòu)體存儲(chǔ)食物的屬性*/
{
int x; /* 食物的坐標(biāo) */
int y;
int yes; /* 值為0表示屏幕上沒有食物,值為1表示屏幕上有食物 */
int color; /* 食物顏色 */
}food;
struct Snake/*定義結(jié)構(gòu)體存儲(chǔ)蛇的屬性*/
{
int x[N]; /* 每一節(jié)蛇的坐標(biāo) */
int y[N];
int color[N];/*存儲(chǔ)每一節(jié)蛇的顏色*/
int node; /* 蛇的節(jié)數(shù) */
int direction; /* 蛇移動(dòng)的方向 */
int life; /* 蛇的生命,如果為1,蛇死,游戲結(jié)束 */
}snake;
void init(void)/*圖形驅(qū)動(dòng)*/
{
int driver=DETECT,mode=0;
(EGAVGA_driver);
initgraph(&driver,&mode,"");
}
void drawmat(char *mat,int matsize,int x,int y,int color)/*漢字點(diǎn)陣*/
{
int i,j,k,m;
m=(matsize-1)/8+1;
for(j=0;j<matsize;j++)
for(i=0;i<m;i++)
for(k=0;k<8;k++)
if(mat[j*m+i]&(0x80>>k))
putpixel(x+i*8+k,y+j,color);
}
void showword(void)
{/* 調(diào)用漢字點(diǎn)陣輸出程序,顯示標(biāo)題和作者信息 */
drawmat(cai48H,48,249,-4,7);
drawmat(she48H,48,329,-4,7);
drawmat(tun48H,48,409,-4,7);
drawmat(dan48H,48,489,-4,7);
drawmat(cai48H,48,250,-5,4);
drawmat(she48H,48,330,-5,4);
drawmat(tun48H,48,410,-5,4);
drawmat(dan48H,48,490,-5,4);
/*作者 田**/
drawmat(zuo16H,16,515,465,7);
drawmat(zhe16H,16,530,465,7);
drawmat(tian16H,16,550,465,7);
drawmat(xue16H,16,565,465,7);
drawmat(ke16H,16,580,465,7);
}
void draw(void)/*畫出四周的墻*/
{
if(color==15)
color=0;
setcolor(++color);
(SOLID_LINE,0,1);
for(i=30;i<=600;i+=10)
{
rectangle(i,40,i+10,49);
rectangle(i,451,i+10,460);
}
for(i=40;i<450;i+=10)
{
rectangle(30,i,39,i+10);
rectangle(601,i,610,i+10);
}
}
void prscore(void)
{/* 打印游戲分?jǐn)?shù) */
char str[10];
(SOLID_FILL,YELLOW);
bar(50,10,200,30);
setcolor(6);
(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,15,str);
}
void gameover(void)
{
(); /* 清屏函數(shù) */
for(i=0;i<snake.node;i++)/* 畫出蛇死時(shí)的位置 */
{
setcolor(snake.color[i]);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]+10);
}
prscore(); /* 顯示分?jǐn)?shù) */
draw();
showword();
(0,0,6);
setcolor(7);
outtextxy(103,203,"GAME OVER");
setcolor(RED);
outtextxy(100,200,"GAME OVER");
}
void gameplay(void)/* 玩游戲的具體過程 */
{
int flag,flag1;
randomize();
prscore();
gamespeed=50000;
food.yes=0;/* food.yes=0表示屏幕上沒有食物 */
snake.life=1;/* snake.life=1表示蛇是活著的 */
snake.direction=4;/* 表示蛇的初始方向?yàn)橄蛴?*/
snake.node=2; /* 蛇的初始化為兩節(jié) */
snake.color[0]=2; /*兩節(jié)蛇頭初始化為綠色*/
snake.color[1]=2;
snake.x[0]=100;snake.y[0]=100;
snake.x[1]=110;snake.y[1]=100;
food.color=random(15)+1;
while(1)
{
while(1)
{
if(food.yes==0) /* 如果蛇活著 */
{
while(1)
{
flag=1;
food.yes=1;
food.x=random(56)*10+40;
food.y=random(40)*10+50;
for(i=0;i<snake.node;i++)
{
if(food.x==snake.x[i]&&food.y==snake.y[i])
flag=0;
}
if(flag) break;
}
}
if(food.yes)
{
setcolor(food.color);
rectangle(food.x,food.y,food.x+10,food.y+10);
}
for(i=snake.node-1;i>0;i--)
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
switch(snake.direction)
{
case 1: snake.y[0]-=10;break;
case 2: snake.y[0]+=10;break;
case 3: snake.x[0]-=10;break;
case 4: snake.x[0]+=10;break;
}
for(i=3;i<snake.node;i++)
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
gameover();
snake.life=0;
break;
}
}
if(snake.x[0]<40||snake.x[0]>590||snake.y[0]<50||snake.y[0]>440)
{
gameover();
snake.life=0;
}
if(snake.life==0)
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*蛇吃掉食物*/
{
setcolor(0);
rectangle(food.x,food.y,food.x+10,food.y+10);
snake.x[snake.node]=-20;
snake.y[snake.node]=-20;
snake.color[snake.node]=food.color;
snake.node++;
food.yes=0;
food.color=random(15)+1;
score+=10;
prscore();
if(score%100==0&&score!=0)
{
for(i=0;i<snake.node;i++)/* 畫出蛇 */
{
setcolor(snake.color[i]);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]+10);
}
sound(200);
delay(50000);delay(50000);delay(50000);
delay(50000);delay(50000);delay(50000);
nosound();
gamespeed-=5000;
draw();
}
else
{
sound(500);
delay(500);
nosound();
}
}
for(i=0;i<snake.node;i++)/* 畫出蛇 */
{
setcolor(snake.color[i]);
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]+10);
}
delay(gamespeed);
delay(gamespeed);
flag1=1;
setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]+10);
if(kbhit()&&flag1==1)/*如果沒按有效鍵就重新開始循環(huán)*/
{
flag1=0;
key=bioskey(0);
if(key==esc)
exit(0);
else if(key==up&&snake.direction!=2)
snake.direction=1;
else if(key==down&&snake.direction!=1)
snake.direction=2;
else if(key==left&&snake.direction!=4)
snake.direction=3;
else if(key==right&&snake.direction!=3)
snake.direction=4;
}
}
if(snake.life==0)/*如果蛇死了就退出循環(huán)*/
break;
}
}
void main(void)
{
while(1)
{
color=0;
init();
();
showword();
draw();
gameplay();
setcolor(15);
(0,0,2);
outtextxy(200,400,"CONTINUE(Y/N)?");
while(1)
{
key=bioskey(0);
if(key==Y||key==n||key==esc)
break;
}
if(key==n||key==esc)
break;
}
();
}

用c語言設(shè)計(jì)貪吃蛇游戲

//?<Copyright?liaoqb>
#include?<windows.h>
#include?<stdlib.h>
#include?<time.h>
const?int?LENGTH?=?40;
const?int?WIDTH?=?10;
const?int?RANGE?=?50;
const?int??=?5;
const?int?speed?=?300;
#define?SNAKE_COLOR?RGB(176,?196,?222)
#define?_COLOR?RGB(255,?255,?0)
#define?DRAW_SNAKE(x)?(x)?*?WIDTH
enum?IsSnake?{isSnake,?,?isFood};
IsSnake?map[LENGTH][LENGTH];
struct?snake?{
??int?x;
??int?y;
??snake*?next;
??snake(int?x,?int?y,?snake*?n?=?NULL)?{
????this?->?x?=?x;
this?->?y?=?y;
next?=?n;
??}
};??//?snake
typedef?struct?snake?Snake;
Snake*?head?=?NULL;??//?queue
Snake*?tail?=?NULL;??//?queue
int?direct?=?0;??//?direction
RECT?;??//?district
TCHAR?szAppName[]?=?TEXT("-*-?snake?game?-*?");??//?The?project?name
LRESULT?CALLBACK?WndProc(HWND,?UINT,?WPARAM,?LPARAM);??//?message?function
void?();
void?(Snake*,LPVOID);??//?control?the?snake
void?Move(HWND);
void?PutFood();
int?WINAPI?WinMain(HINSTANCE?hInstance,?HINSTANCE?,?PSTR?szCmdLine,?int?iCmdShow)?{
??MSG?msg;
??HWND?hwnd;
??WNDCLASS?wndclass;
??while?(TRUE)?{
wndclass.?=?0;
wndclass.?=?0;
wndclass.?=?(RGB(255,?255,?255));
wndclass.hCursor?=?(NULL,?IDC_ARROW);
wndclass.hIcon?=?LoadIcon(NULL,?IDI_);
wndclass.hInstance?=?hInstance;
wndclass.?=?WndProc;
wndclass.?=?szAppName;
wndclass.?=?NULL;
wndclass.style?=?CS_HREDRAW?|?CS_VREDRAW;
if?(!(&wndclass))?{
?(NULL,?TEXT("Please?try?again!!!"),?szAppName,?MB_ICONERROR);
?return?0;
}
break;
??}
??hwnd?=?(szAppName,?TEXT("<^_^>?Snake?Game?<^_^>"),?WS_,
CW_,?CW_,?CW_,?CW_,
NULL,?NULL,?hInstance,?NULL);
??(hwnd,?SW_NORMAL);
??(hwnd);
??while?(TRUE)?{
if?((&msg,?NULL,?0,?0,?PM_REMOVE))?{
?if?(msg.message?==?WM_QUIT)
???break;
?(&msg);
?(&msg);
}?else?{
?Move(hwnd);
}
??}
??return?msg.wParam;
}
LRESULT?CALLBACK?WndProc(HWND?hwnd,?UINT?message,?WPARAM?wParam,?LPARAM?lParam)?{
??HDC?hdc;
???ps;
??HBRUSH?hBrush;
??switch?(message)?{
??case?WM_DESTROY:
(0);
return?0;
??case?WM_CREATE:
();
(hwnd,?RANGE,?RANGE,?WIDTH?*?LENGTH?+?RANGE?*?3,?WIDTH?*?LENGTH?+?RANGE?*?3,?TRUE);
return?0;
??case?WM_KEYDOWN:
switch?(wParam)?{
case?VK_LEFT:
?if?(direct?!=?VK_RIGHT)
direct?=?VK_LEFT;
?break;
case?VK_RIGHT:
?if?(direct?!=?VK_LEFT)
direct?=?VK_RIGHT;
?break;
case?VK_UP:
?if?(direct?!=?VK_DOWN)
direct?=?VK_UP;
?break;
case?VK_DOWN:
?if?(direct?!=?VK_UP)
direct?=?VK_DOWN;
?break;
default:
?break;
}
return?0;
??case?WM_PAINT:
hdc?=?(hwnd,?&ps);
(hdc,?RANGE,?RANGE,?NULL);
hBrush?=?(_COLOR);
(hdc,?hBrush);
Rectangle(hdc,.left,?.top,?.right,?.bottom);
(hBrush);
hBrush?=?(SNAKE_COLOR);
(hdc,hBrush);
for?(int?i?=?0;?i?<?LENGTH;?++i)?{
?for?(int?j?=?0;?j?<?LENGTH;?++j)?{
if?(map[i][j]?==?isSnake?||?map[i][j]?==?isFood)?{
?Rectangle(hdc,?DRAW_SNAKE(i),?DRAW_SNAKE(j),?DRAW_SNAKE(i?+?1),?DRAW_SNAKE(j?+?1));
}
?}
}
(hBrush);
EndPaint(hwnd,?&ps);
??}
??return?(hwnd,?message,?wParam,?lParam);
}
void?()?{
??for?(int?i?=?0;?i?<?LENGTH;?++i)?{
for?(int?j?=?0;?j?<?LENGTH;?++j)?{
?map[i][j]?=?;
}
??}
??for?(i?=?0;?i?<?;?++i)?{
if?(i?==?0)?{
?head?=?tail?=?new?snake(i,?0);
}?else?{
?snake*?temp?=?new?snake(i,?0);
?tail?->?next?=?temp;
?tail?=?temp;
}
map[i][0]?=?isSnake;
??}
??.left?=?.top?=?0;
??.right?=?.bottom?=?WIDTH?*?LENGTH;
??direct?=?VK_RIGHT;
??PutFood();
}
void?PutFood()?{
??srand(static_cast<unsigned>(time(NULL)));
??int?x,?y;
??do?{
????x?=?rand()?%?LENGTH;
y?=?rand()?%?LENGTH;
??}?while?(map[x][y]?==?isSnake);
??map[x][y]?=?isFood;
}??//?put?food
void?Move(HWND?hwnd)?{
??snake*?temp;
??switch?(direct)?{
??case?VK_LEFT:
temp?=?new?snake(tail?->?x?-?1,?tail?->?y);
break;
??case?VK_RIGHT:
temp?=?new?snake(tail?->?x?+?1,?tail?->?y);
break;
??case?VK_UP:
temp?=?new?snake(tail?->?x,?tail?->?y?-?1);
break;
??case?VK_DOWN:
temp?=?new?snake(tail?->?x,?tail?->?y?+?1);
break;
??}
??(temp,hwnd);
??//(hwnd,NULL,FALSE);
??Sleep(speed);??//?control?speed
}??//?snake?moving
void?(Snake*?temp,LPVOID?lParam)?{
HWND?hwnd;
hwnd=(HWND)lParam;
??if?(temp?->?x?<?0?||?temp?->?x?>=?LENGTH?||?temp?->?y?<?0?||?temp?->?y?>=?LENGTH
||?map[temp?->?x][temp?->?y]?==?isSnake)?{??//?the?snake?is?died
????(NULL,TEXT("<Copyright?liaoqb>?Sorry?!!!?Game?Over?!!!?<Copyright?liaoqb>"),szAppName,0);
delete?temp;
while?(head?!=?NULL)?{
?Snake*?ptr?=?head;
?head?=?head?->?next;
?delete?ptr;
}
head?=?tail?=?temp?=?NULL;
();
return;
??}?else?if?(map[temp?->?x][temp?->?y]?==?)?{??//?move
????map[temp?->?x][temp?->?y]?=?isSnake;
map[head?->?x][head?->?y]?=?;
snake*?ptr?=?head;
head?=?head?->?next;
delete?ptr;
tail?->?next?=?temp;
tail?=?temp;
(hwnd,NULL,FALSE);
??}?else?{??//?if?eat?food
????map[temp?->?x][temp?->?y]?=?isSnake;
tail?->?next?=?temp;
tail?=?temp;
PutFood();
//(hwnd,NULL,FALSE);
??}
}

溫馨提示:為不影響您的學(xué)業(yè),來校區(qū)前請(qǐng)先電話咨詢,方便我校安排相關(guān)的專業(yè)老師為您解答
相關(guān)資料
姓名不能為空
手機(jī)號(hào)格式錯(cuò)誤