用Java编写的贪吃蛇游戏.docx

上传人:b****7 文档编号:15926955 上传时间:2023-07-09 格式:DOCX 页数:8 大小:16.73KB
下载 相关 举报
用Java编写的贪吃蛇游戏.docx_第1页
第1页 / 共8页
用Java编写的贪吃蛇游戏.docx_第2页
第2页 / 共8页
用Java编写的贪吃蛇游戏.docx_第3页
第3页 / 共8页
用Java编写的贪吃蛇游戏.docx_第4页
第4页 / 共8页
用Java编写的贪吃蛇游戏.docx_第5页
第5页 / 共8页
用Java编写的贪吃蛇游戏.docx_第6页
第6页 / 共8页
用Java编写的贪吃蛇游戏.docx_第7页
第7页 / 共8页
用Java编写的贪吃蛇游戏.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

用Java编写的贪吃蛇游戏.docx

《用Java编写的贪吃蛇游戏.docx》由会员分享,可在线阅读,更多相关《用Java编写的贪吃蛇游戏.docx(8页珍藏版)》请在冰点文库上搜索。

用Java编写的贪吃蛇游戏.docx

用Java编写的贪吃蛇游戏

贪吃蛇游戏的制作

里面还有一些代码还没有完善,比如说:

没有开始的控制,当玩家一进去游戏就自动开始了,并且当玩家同时点击方向键的上键和左键游戏就会中断,这些仅仅是我在测试的时候发现的,也许还有更多的错误,见谅!

我会在最近更新的,然后上传到我的XX账号里面的。

当然,这个游戏里面的界面的大小和颜色也许不是你所喜欢的,但是你可以修改的,具体的修改方法如下:

1、修改界面的大小

在GreenSnake类中,publicstaticfinalintcanvasWidth=1400;

publicstaticfinalintcanvasHeigth=1500;

在上面的代码中修改后面的值就可以了。

2、修改界面的颜色

也是在GreenSnake类中,g.setColor(Color.GREEN;

修改color后面颜色就可以了,(这里说明一下:

你可以将color后面

的逗号去掉,然后重新输入一个,后面就自动会弹出很多的颜色,你

可以在里面选择一个自己喜欢的颜色

3、修改蛇的食物的颜色

也是在GreenSnake类中,g.setColor(Color.RED;

方法和修改界面的颜色一样

4、修改蛇身的大小

也是在GreenSnake类中,publicstaticfinalintnodeWidth=20;

publicstaticfinalintnodeHeigth=20;

修改以上代码的值就可以了。

贪吃蛇游戏的制作:

这里我用到的是netbeansIDE6.9.1这个软件制作的:

1、首先点击/文件/,创建一个新的项目,名称叫snake;

2、在这个项目下创建一个新的包,取名叫snake;

3、最后就是需要在这个包里面创建3个类,这3个类分别为:

Greedsnake、Node、SnakeModel.

(1Greensnake.java

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

importjavax.swing.*;

/**

*

*@author:

1袏掱惢1

publicclassGreedSnakeimplementsKeyListener{

JFramemainFrame;

CanvaspaintCanvas;

JLabellabelScore;

SnakeModelsnakeModel=null;

publicstaticfinalintcanvasWidth=1400;

publicstaticfinalintcanvasHeigth=1500;

publicstaticfinalintnodeWidth=20;

publicstaticfinalintnodeHeigth=20;

publicGreedSnake({

mainFrame=newJFrame("GreedSnake";

Containercp=mainFrame.getContentPane(;

labelScore=newJLabel("Score:

";

cp.add(labelScore,BorderLayout.NORTH;

//

paintCanvas=newCanvas(;

paintCanvas.setSize(canvasWidth+1,canvasHeigth+1;

paintCanvas.addKeyListener(this;

cp.add(paintCanvas,BorderLayout.CENTER;

//

JPanelpanelButtom=newJPanel(;

panelButtom.setLayout(newBorderLayout(;

JLabellabelHelp;

labelHelp=newJLabel("PageUp,PageDownforspeed:

",JLabel.CENTER;

panelButtom.add(labelHelp,BorderLayout.NORTH;

labelHelp=newJLabel("EnterorRorSforstart:

",JLabel.CENTER;

panelButtom.add(labelHelp,BorderLayout.CENTER;

labelHelp=newJLabel("SPACEorPforpause",JLabel.CENTER;

panelButtom.add(labelHelp,BorderLayout.SOUTH;

cp.add(panelButtom,BorderLayout.SOUTH;

mainFrame.addKeyListener(this;

mainFrame.pack(;

mainFrame.setResizable(false;

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE;

mainFrame.setVisible(true;

begin(;

}

publicvoidkeyTyped(KeyEvente{

}

publicvoidkeyPressed(KeyEvente{

intkeyCode=e.getKeyCode(;

if(snakeModel.running{

switch(keyCode{

caseKeyEvent.VK_UP:

snakeModel.changeDirection(SnakeModel.UP;

break;

caseKeyEvent.VK_DOWN:

snakeModel.changeDirection(SnakeModel.DOWN;

break;

caseKeyEvent.VK_LEFT:

snakeModel.changeDirection(SnakeModel.LEFT;

break;

caseKeyEvent.VK_RIGHT:

snakeModel.changeDirection(SnakeModel.RIGHT;

break;

caseKeyEvent.VK_PAGE_UP:

snakeModel.speedUp(;

break;

caseKeyEvent.VK_PAGE_DOWN:

snakeModel.speedDown(;

break;

caseKeyEvent.VK_SPACE:

caseKeyEvent.VK_P:

snakeModel.changePauseState(;

break;

}

}

}

publicvoidkeyReleased(KeyEvente{

}

voidrepaint({

Graphicsg=paintCanvas.getGraphics(;

//绘制背景

g.setColor(Color.GREEN;

g.fillRect(0,0,canvasWidth,canvasHeigth;

//画蛇

g.setColor(Color.BLACK;

LinkedListna=snakeModel.nodeArray;

Iteratorit=na.iterator(;

while(it.hasNext({

Noden=(Nodeit.next(;

drawNode(g,n;

}

//画食物

g.setColor(Color.RED;

Noden=snakeModel.food;

drawNode(g,n;

}

voidbegin({

if(snakeModel==null{

snakeModel=newSnakeModel(this,canvasWidth/nodeWidth,canvasHeigth/nodeHeigth;

}

(newThread(snakeModel.start(;

//(newThread(snakeModel.start(;

}

voiddrawNode(Graphicsg,Noden{

g.fillRect(n.x*nodeWidth,n.y*nodeHeigth,nodeWidth-1,nodeHeigth-1;

}

publicstaticvoidmain(String[]args{

GreedSnakegs=newGreedSnake(;

}

}

(2Node.java

/**

*

*@author:

1袏掱惢1

*/

publicclassNode{

intx;

inty;

publicNode(intx,inty{

this.x=x;

this.y=y;

}

}

(3SnakeModel.java

importjava.util.*;

importjava.util.logging.Level;

importjava.util.logging.Logger;

/**

*

*@author:

1袏掱惢1*/

publicclassSnakeModelimplementsRunnable{

GreedSnakegs;

boolean[][]matrix;//界面数据保存在此数组

LinkedListnodeArray=newLinkedList(;

Nodefood;

intmaxX;

intmaxY;

booleanrunning=false;

inttimeInterval=200;

doublespeedChangeRate=0.1;

booleanpaused=false;//游戏状态

intdirection=2;//初始方向

publicstaticfinalintUP=2;

publicstaticfinalintDOWN=4;

publicstaticfinalintLEFT=1;

publicstaticfinalintRIGHT=3;

publicSnakeModel(GreedSnakegs,intmaxX,intmaxY{

this.gs=gs;this.maxX=maxX;this.maxY=maxY;matrix=newboolean[maxX][];for(inti=0;i20?

10:

maxX/2;for(inti=0;i

Noden=(NodenodeArray.getFirst(;intx=n.x;inty=n.y;switch(direction{caseUP:

y--;break;caseDOWN:

y++;break;caseLEFT:

x--;break;caseRIGHT:

x++;break;}if((0<=x&&x

=newDirection%2{direction=newDirection;}}

publicvoidspeedUp({timeInterval=(int(timeInterval*(1-speedChangeRate;}publicvoidspeedDown({timeInterval=(int(timeInterval*(1+speedChangeRate;}publicvoidchangePauseState({paused=!

paused;}publicvoidrun({running=true;while(running{//gs.repaint(;try{Thread.sleep(timeInterval;}catch(InterruptedExceptionex{Logger.getLogger(SnakeModel.class.getName(.log(Level.SEVERE,ex;}if(moveOn({gs.repaint(;}else{break;}}}}null,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2