真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言貪吃蛇制作,貪吃蛇怎么編程

如何用慧編程做貪吃蛇代碼

用慧編程做貪吃蛇代碼過程如下:

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、臨川網(wǎng)站維護(hù)、網(wǎng)站推廣。

1、我們需要建立四個(gè)頭文件,然后分別設(shè)置蛇的狀態(tài),上下左右,這是蛇能夠有方向可走的前提,然后我們?cè)僭O(shè)置蛇身的節(jié)點(diǎn),定義一個(gè)簡(jiǎn)單的函數(shù),這樣蛇的全身以及他的行走方向就弄完了。

2、貪吃蛇不能穿墻代碼。

3、第二步,一個(gè)函數(shù)這個(gè)函數(shù)的目的是貪吃蛇不能穿墻,很簡(jiǎn)單的代碼分別設(shè)置長(zhǎng)寬的最大位移,在內(nèi)部范圍內(nèi)設(shè)置為一即可通過,否則不能穿墻。貪吃蛇隨機(jī)生成一個(gè)食物。

4、設(shè)置一個(gè)隨機(jī)函數(shù)。這樣貪吃蛇代碼就做好了。

慧編程是一款面向STEAM教育領(lǐng)域的積木式和代碼編程軟件,基于圖形化編程開發(fā)。

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

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{

background-color:blue;

}

/style

/head

script

function $(id){return document.getElementById(id);}

/**************************************************************

* javascript貪吃蛇 v2.4 br /

* author: sunxing007 05/14/2009br /

* 轉(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 colorIndex = 0;

//產(chǎn)生初始移動(dòng)方向

this.direction = Math.floor(Math.random()*4);

//構(gòu)造table

for(var row=0;rowthis.rowCount;row++){

var tr=this.tbl.insertRow(-1);

for(var col=0;colthis.colCount;col++) {

var td=tr.insertCell(-1);

}

}

//產(chǎn)生20個(gè)松散節(jié)點(diǎn)

for(var i=0; i10; i++){

x = Math.floor(Math.random()*this.colCount);

y = Math.floor(Math.random()*this.rowCount);

colorIndex = Math.floor(Math.random()*7);

if(!this.isCellFilled(x,y)){

this.tbl.rows[y].cells[x].style.backgroundColor = colors[colorIndex];

}

}

//產(chǎn)生蛇頭

while(true){

x = Math.floor(Math.random()*this.colCount);

y = Math.floor(Math.random()*this.rowCount);

if(!this.isCellFilled(x,y)){

this.tbl.rows[y].cells[x].style.backgroundColor = "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 = setInterval(function(){

Snake.erase();

Snake.moveOneStep();

Snake.paint();

}, this.speed);

},

//移動(dòng)一節(jié)身體

moveOneStep: function(){

if(this.checkNextStep()==-1){

clearInterval(this.timer);

alert("Game over!\nPress Restart to continue.");

return;

}

if(this.checkNextStep()==1){

var _point = this.getNextPos();

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.generateDood();

return;

}

//window.status = this.toString();

var point = this.getNextPos();

//保留第一節(jié)的顏色

var color = this.body[0].color;

//顏色向前移動(dòng)

for(var i=0; ithis.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(){

clearInterval(Snake.timer);

this.paint();

},

getNextPos: 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)到的下一步是什么

checkNextStep: function(){

var point = this.getNextPos();

var x = point.x;

var y = point.y;

if(x0||x=this.colCount||y0||y=this.rowCount){

return -1;//觸邊界,游戲結(jié)束

}

for(var i=0; ithis.body.length; i++){

if(this.body[i].x==xthis.body[i].y==y){

return -1;//碰到自己的身體,游戲結(jié)束

}

}

if(this.isCellFilled(x,y)){

return 1;//有東西

}

return 0;//空地

},

//擦除蛇身

erase: function(){

for(var i=0; ithis.body.length; i++){

this.eraseDot(this.body[i].x, this.body[i].y);

}

},

//繪制蛇身

paint: function(){

for(var i=0; ithis.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.backgroundColor = "";

},

paintDot: function(x,y,color){

this.tbl.rows[y].cells[x].style.backgroundColor = color;

},

//得到一個(gè)坐標(biāo)上的顏色

getColor: function(x,y){

return this.tbl.rows[y].cells[x].style.backgroundColor;

},

//用于調(diào)試

toString: function(){

var str = "";

for(var i=0; ithis.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)有沒有被填充

isCellFilled: function(x,y){

if(this.tbl.rows[y].cells[x].style.backgroundColor == ""){

return false;

}

return true;

},

//重新開始

restart: function(){

if(this.timer){

clearInterval(this.timer);

}

for(var i=0; ithis.rowCount;i++){

this.tbl.deleteRow(0);

}

this.body = [];

this.init();

this.speed = 250;

},

//加速

speedUp: function(time){

if(!this.paused){

if(this.speed+time10||this.speed+time2000){

return;

}

this.speed +=time;

this.pause();

this.move();

}

},

//產(chǎn)生食物。

generateDood: 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 colorIndex = Math.floor(Math.random()*7);

if(!this.isCellFilled(x,y)){

this.tbl.rows[y].cells[x].style.backgroundColor = colors[colorIndex];

}

}

};

/script

body onload="Snake.init();"

/*************************************************************br /

* javascript貪吃蛇 v2.4br /

* author: sunxing007 05/14/2009br /

* 轉(zhuǎn)載請(qǐng)注明來自 a href="";/a 謝謝!br /

**************************************************************/br /

table id="main" border="1" cellspacing="0" cellpadding="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語(yǔ)言編寫的貪吃蛇程序

#include stdio.h

#include graphics.h

#include stdlib.h

#include dos.h /*引用的庫(kù)函數(shù)*/

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b/*宏定義鍵名*/

#define N 200

int i,key;

int level;/*游戲等級(jí)*/

int score=0;/*得分*/

int gamespeed;/*游戲速度*/

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;/*蛇的結(jié)構(gòu)體*/

void Choicelevle(void);/*選擇游戲等級(jí)*/

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

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

void DRAW(void);/*游戲區(qū)域*/

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

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

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

/*主函數(shù)*/

void main(void)

{

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

Choicelevle();/*選擇游戲等級(jí)*/

DRAW();/*游戲區(qū)域*/

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

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

}

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

void Init(void)

{

int gd=DETECT,gm;

initgraph(gd,gm,"\\turboc2"); /*初始化圖形系統(tǒng)*/

cleardevice(); /*清除圖形界面*/

}

/*選擇游戲等級(jí)*/

void Choicelevle(void)

{char name[20];

setcolor(YELLOW);

settextstyle(0,0,6);

outtextxy(150,150,"Snake");

setcolor(GREEN);

settextstyle(0,0,1);

outtextxy(200,250,"please put in your English name:");

outtextxy(200,270,"Choice levle from 1-9.");

outtextxy(300,320,"name:yangzilong");/*制作人姓名*/

outtextxy(300,350,"number:0902060226");/*制作人學(xué)號(hào)*/

outtextxy(300,380,"class:computer science 0602");/*制作人班級(jí)*/

getch();

printf("please putin your name:");

gets(name);

printf("please choice levle:");

scanf("%d",level);

gamespeed=100000-400*level-300*level*level;

if(level9||level1)

{cleardevice(); /*清除圖形界面*/

setcolor(YELLOW); /*設(shè)置字體顏色*/

settextstyle(0,0,2); /*設(shè)置字體類型*/

outtextxy(150,200,"level input error"); /*顯示文本*/

getch();

level=1;

}

}

void DRAW(void)

{cleardevice(); /*清屏*/

setcolor(2);

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

rectangle(45,45,465,325);

}

/*玩游戲具體過程*/

void GamePlay(void)

{setcolor(5);

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

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

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

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

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

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

snake.x[1]=330;snake.y[1]=240; /*蛇的第二節(jié)位置*/

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

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

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

{

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

{

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

{

food.x=rand()%360+70;

food.y=rand()%250+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;i0;i--)/*蛇的每個(gè)環(huán)節(jié)往前移動(dòng)*/

{

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;isnake.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;

}

}

/*如果蛇頭碰到墻壁,蛇頭從對(duì)面墻出來*/

if(snake.x[0]50)

{snake.x[0]=450;/*如果蛇頭越過左邊界,則從右邊界進(jìn)入*/

snake.y[0]=snake.y[0];/*縱坐標(biāo)不變*/

for(i=snake.node-1;i0;i--)

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

snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進(jìn)*/

}

{

setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/

bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/

}

}

else

if(snake.x[0]450)

{snake.x[0]=50;/*如果蛇頭越過右邊界,則蛇頭從左邊界進(jìn)入*/

snake.y[0]=snake.y[0];/*縱坐標(biāo)不變*/

for(i=snake.node-1;i0;i--)

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

snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進(jìn)*/

}

{

setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/

bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/

}

}

else

if(snake.y[0]60)

{snake.y[0]=320;/*如果蛇頭越過上邊界,則從下邊界進(jìn)入*/

snake.x[0]=snake.x[0];/*橫坐標(biāo)不變*/

for(i=snake.node-1;i0;i--)

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

snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進(jìn)*/

}

{

setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/

bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/

}

}

else

if(snake.y[0]320)

{snake.y[0]=60;/*如果蛇頭越過下邊界,則從上邊界進(jìn)入*/

snake.x[0]=snake.x[0];/*橫坐標(biāo)不變*/

for(i=snake.node-1;i0;i--)

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

snake.y[i]=snake.y[i-1]; /*蛇的其他節(jié)數(shù)向前推進(jìn)*/

}

{

setfillstyle(SOLID_FILL,0); /*設(shè)置填充模式和顏色,0表示黑色*/

bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/

}

}

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

break;

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

{

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

rectangle(food.x,food.y,food.x+10,food.y-10); /*用當(dāng)前線型和顏色畫一矩形*/

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; /*每吃掉一食物,得分累加10分*/

if(score%100==0)

{level++;gamespeed=100000-400*level-300*level*level;/*每吃掉10食物提升一級(jí),速度加快*/

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

setcolor(YELLOW); /*設(shè)置字體顏色*/

settextstyle(0,0,4); /*設(shè)置字體類型*/

outtextxy(150,200,"LEVEL UP"); /*顯示文本*/

if(level==10)

{level=1,gamespeed=100000-400*level-300*level*level;}

delay(6000000);

delay(6000000);

delay(6000000);

delay(6000000);

delay(6000000);

delay(6000000);

delay(6000000);

bar(50,55,455,315);/*bar是表示填充的范圍的函數(shù)*/

}

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

}

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

for(i=0;isnake.node;i++)

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

snake.y[i]-10);

delay(gamespeed); /*控制游戲速度*/

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);

} /*endwhile(!kbhit)*/ /*用黑色去除蛇的的最后一節(jié)*/

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

break;

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

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

break;

else

if(key==UPsnake.direction!=4)

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

snake.direction=3;

else

if(key==RIGHTsnake.direction!=2)

snake.direction=1;

else

if(key==LEFTsnake.direction!=1)

snake.direction=2;

else

if(key==DOWNsnake.direction!=3)

snake.direction=4;

}/*endwhile(1)*/

}

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

void GameOver(void)

{

cleardevice(); /*清屏*/

PrScore();

setcolor(RED); /*設(shè)置字體顏色*/

settextstyle(0,0,4); /*設(shè)置字體類型*/

outtextxy(200,200,"GAME OVER"); /*顯示文本*/

getch();

}

/*輸出成績(jī)及游戲等級(jí)*/

void PrScore(void)

{

char str1[20];/*設(shè)置字符型數(shù)組*/

setfillstyle(SOLID_FILL,0);

bar(50,15,390,35); /*填充矩形框*/

setcolor(6); /*設(shè)置文本顏色*/

settextstyle(0,0,2); /*設(shè)置數(shù)組顯示位置*/

sprintf(str1,"score %d level %d",score,level);/*顯示數(shù)組內(nèi)容*/

outtextxy(55,20,str1);

setcolor(YELLOW); /*設(shè)置字體顏色*/

settextstyle(0,0,2); /*設(shè)置字體類型*/

outtextxy(250,400,"EXIT=ESC ");/*顯示文本*/

}

void Close(void)

{

closegraph();

}

求助一個(gè)貪吃蛇的制作代碼!

沒找到,只有C的~

*要求改進(jìn):用圖形模式表示print()函數(shù)*/

#include mem.h

#include fcntl.h

#include conio.h

#include graphics.h

#include io.hchin a i t p oe er . co mugTTCrI

#include stdlib.h

#include stdio.h

#include bios.h

#include math.h

#define N 50

#define Time 10000

int A[N][N];

int IE=6;chin a i t p oe er . co mugTTCrI

int SCORE=0;

char a[]="9999";

void *ball;

int maxx;

unsigned int size;chin a i t p oe er . co mugTTCrI

int head=1;/*0,1,2,3*/

int i=3,j=0,ii=0,jj=0;

int length=3;

int x,y;/*蛇頭標(biāo)志*/

int add=1;/*食物標(biāo)志*/

int tii,tjj;/* 前蛇尾坐標(biāo) */

void start_image()

{

setlinestyle(SOLID_LINE,1,2);

setcolor(GREEN);

line(39,39,39,441);

line(39,441,441,441);

line(441,441,441,39);

line(441,39,39,39);chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

}

void draw_image(int x,int y)

{

int i=x*400/N+40;

int j=y*400/N+40;

setfillstyle(1,4);

bar(j,i,j+400/N,i+400/N);

}

void eraser_image(int x,int y)

{

int i=x*400/N+40;

int j=y*400/N+40;

setfillstyle(1,0);

bar(j,i,j+400/N,i+400/N);

}chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

void tu()

{/*tuxing jiemian*/

maxx=getmaxx();

size=imagesize(210,390,450,420);

ball=malloc(size);

setfillstyle(1,10);

bar(160,170,473,253);

setfillstyle(1,9);

bar(163,173,470,250);

setcolor(13);

outtextxy(200,200,"Welcome to Greedy Snake Game");

setcolor(14);

outtextxy(250,220,"Developer :Wu siyuan ");

outtextxy(290,240,"2003.5");

outtextxy(210,390,"Press any key to contunue...");

getimage(210,390,450,420,ball);chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

while(!kbhit())

{/* 沒有鍵盤擊鍵 */

putimage(210,390,ball,XOR_PUT);

delay(30000);

}

cleardevice();

}

void print()/*輸出*/

{ /*要將轉(zhuǎn)化成圖形模式*/

int a,b;

/*start_image(); */chin a i t p oe er . co mugTTCrI

for(a=0;aN;a++)

{ for(b=0;bN;b++)

{if(A[a][b]1)draw_image(a,b);

if(A[a][b]==0)eraser_image(a,b); }chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

}

}chin a i t p oe er . co mugTTCrI

void snake() /*begin*/

{

int a,b;

for(a=0;aN;a++)

for(b=0;bN;b++)

A[a][b]=0;chin a i t p oe er . co mugTTCrI

A[i][j]=5;A[i-1][j]=4;A[i-2][j]=3;A[i-3][j]=2;

}

void del_tail()/*蛇尾的操作*/

{

int number=A[ii][jj];

tii=ii;tjj=jj;/*記錄前蛇尾*/chin a i t p oe er . co mugTTCrI

while(1)

{

if(A[ii][jj-1]==number+1||A[ii][jj-1]==2number==30)

{jj--;break;}chin a i t p oe er . co mugTTCrI

if(A[ii][jj+1]==number+1||A[ii][jj+1]==2number==30)

{jj++;break;}chin a i t p oe er . co mugTTCrI

if(A[ii-1][jj]==number+1||A[ii-1][jj]==2number==30)

{ii--;break;}chin a i t p oe er . co mugTTCrI

if(A[ii+1][jj]==number+1||A[ii+1][jj]==2number==30)

{ii++;break;}chin a i t p oe er . co mugTTCrI

}

}chin a i t p oe er . co mugTTCrI

void down()

{

head=1;

if(A[i+1][j]1A[i+1][j]!=99)

{printf("I hit myself!");exit(1);}

i++;

if(IE30)IE=2;

A[i][j]=IE;IE++;

del_tail();

A[tii][tjj]=0;chin a i t p oe er . co mugTTCrI

}

void up()

{

head=0;

if(A[i-1][j]1A[i-1][j]!=99)

{printf("I hit myself!");exit(1);}

i--;

if(IE30)IE=2;

A[i][j]=IE;IE++;

del_tail();

A[tii][tjj]=0;chin a i t p oe er . co mugTTCrI

}

void left()

{

head=2;

if(A[i][j-1]1A[i][j-1]!=99)

{printf("I hit myself!");exit(1);}

j--;

if(IE30)IE=2;

A[i][j]=IE;IE++;

del_tail();

A[tii][tjj]=0;chin a i t p oe er . co mugTTCrI

}

void right()

{

head=3;

if(A[i][j+1]1A[i][j+1]!=99)

{printf("I hit myself!");exit(1);}

j++;

if(IE30)IE=2;

A[i][j]=IE;IE++;

del_tail();

A[tii][tjj]=0;

}chin a i t p oe er . co mugTTCrI

void test()/*測(cè)試是否到達(dá)邊界*/

{

if(i0||iN-1||j0||jN-1)

{

printf("出界! Game over.");

exit(1);

}

}

void move()/*當(dāng)前移動(dòng)*/

{

switch(head)

{

case 0:up();break;

case 1:down();break;

case 2:left();break;

case 3:right();break;

/*default:printf("方向出錯(cuò)!\\n");*/

}chin a i t p oe er . co mugTTCrI

}

int keyboard()

{

/*判斷是否有鍵盤輸入

// 有返回值0,1,2,3

// int k=keyboard;

//判斷方向是否是有效方向

//無效則什么也不做

//若方向有效則改變head的值*/

int a,key,h;

for(a=0;a2;a++)

if(bioskey(1))break;

key=bioskey(0);chin a i t p oe er . co mugTTCrI

switch (key)

{

/*up*/

case 18432:h=0;break;

/*down*/

case 20480:h=1;break;

/*left*/

case 19200:h=2;break;

/*right*/

case 19712:h=3;break;

/*Esc*/

case 283:printf("You press the Esc key!");exit(1);break;

/*default: h=999 ;*/chin a i t p oe er . co mugTTCrI

}

return h;

}

void add_point()/* 用于產(chǎn)生食物 */

{chin a i t p oe er . co mugTTCrI

while(1){

x=random(100)%N;

y=random(100)%N;

if(A[x][y]==0)break;

}

A[x][y]=99;/*食物的標(biāo)志是5*/chin a i t p oe er . co mugTTCrI

add=0;/* 加食物標(biāo)志清0*/chin a i t p oe er . co mugTTCrI

}

void score()

{chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

setcolor(9);

settextstyle(3,0,4);

outtextxy(450,40,"Score:");chin a i t p oe er . co mugTTCrI

setcolor(RED);

outtextxy(450,200,"Speed:");chin a i t p oe er . co mugTTCrI

}

void number_char(int x)

{chin a i t p oe er . co mugTTCrI

int a0,a1,a2,a3;

if(x9999){a[0]='9';a[1]='9';a[2]='9';a[3]='9';}

else {

a0=x/1000;

a[0]=a0+48;chin a i t p oe er . co mugTTCrI

a1=(x-a0*1000)/100;

a[1]=a1+48;chin a i t p oe er . co mugTTCrI

a2=(x-a0*1000-a1*100)/10;

a[2]=a2+48;chin a i t p oe er . co mugTTCrI

a3=(x-a0*1000-a1*100-a2*10);

a[3]=a3+48;

a[4]='\\0';chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

}

}chin a i t p oe er . co mugTTCrI

void snake_get()/*吃到食物時(shí)*/

{

if(i==xj==y)

{

length++;chin a i t p oe er . co mugTTCrI

A[tii][tjj]=A[ii][jj]-1;/*蛇尾加長(zhǎng)*/chin a i t p oe er . co mugTTCrI

ii=tii;jj=tjj;/*蛇尾重新定義*/

add=1;/*食物標(biāo)志置1*/

setfillstyle(1,BLACK);

bar(520,100,650,140);/*clear score*/

setcolor(3);

number_char(SCORE+=100);

outtextxy(550,100,a);chin a i t p oe er . co mugTTCrI

}chin a i t p oe er . co mugTTCrI

}chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

void main()

{

int get_head;/*定義鍵盤輸入*/

int gd=DETECT,gm;

clrscr();chin a i t p oe er . co mugTTCrI

/*regibgiobjdriver(public name)*/

initgraph(gd,gm,"c:\\\\bgi");chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

setbkcolor(BLACK);chin a i t p oe er . co mugTTCrI

tu();

snake();/*初始化*/

start_image();

score();/*定義分?jǐn)?shù)界面*/chin a i t p oe er . co mugTTCrI

while(1)

{ while(bioskey(1)==0)/*是否有鍵盤輸入*/

{chin a i t p oe er . co mugTTCrI

if(add)add_point();/*是否可以增加食物*/chin a i t p oe er . co mugTTCrI

print();

move();

snake_get();/* 是否吃到食物 (test)*/

test();

delay(Time);

}

get_head=keyboard();

/* choose */chin a i t p oe er . co mugTTCrI

while(1){/*判斷得到的坐標(biāo)是否合法*/

if(get_head==0head==1)break;

if(get_head==1head==0)break;

if(get_head==2head==3)break;

if(get_head==3head==2)break;

else {head=get_head;break;}/*合法給head賦值*/

}chin a i t p oe er . co mugTTCrI

}chin a i t p oe er . co mugTTCrI

chin a i t p oe er . co mugTTCrI

}chin a i t p oe er . co mugTTCrI

制作貪吃蛇程序怎么一吃就死

制作貪吃蛇程序一吃就死是因?yàn)榇a輸入錯(cuò)誤,代碼有漏洞,同學(xué)們可以用window_size設(shè)置蛇可以活動(dòng)的區(qū)域大小。foods?是一個(gè)存儲(chǔ)著所有食物位置信息的列表,每次蛇體移動(dòng)后都會(huì)調(diào)用?check_eat_food?函數(shù)檢查是不是吃到了某一個(gè)食物。

可以發(fā)現(xiàn),檢查是不是吃到和吃下去這兩個(gè)動(dòng)作我分為了兩個(gè)函數(shù),以做到每個(gè)函數(shù)一心一意方便后期修改。但是作為一只能照顧自己的貪吃蛇,同學(xué)們還需要能夠判斷當(dāng)前自身狀態(tài)。

貪吃蛇的程序組成思路

貪吃蛇這個(gè)游戲可以分為三大塊:界面:負(fù)責(zé)顯示相關(guān)的所有工作;游戲流程控制:判斷游戲輸贏、游戲初始化等;蛇和食物:移動(dòng)自身、判斷是否死亡、是否被吃等。

每一塊都被做成了單獨(dú)的對(duì)象,通過相互配合實(shí)現(xiàn)游戲。對(duì)于貪吃蛇游戲里面的蛇來講,它可以做的事情有三種:移動(dòng),死亡(吃到自己,撞墻)和吃東西圍繞著這三個(gè)功能,同學(xué)們可以首先寫出一個(gè)簡(jiǎn)陋的蛇。


分享文章:go語(yǔ)言貪吃蛇制作,貪吃蛇怎么編程
轉(zhuǎn)載注明:http://weahome.cn/article/hcjshi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部