java游戏开发什么游戏_JAVA可以做什么类的游戏

展开全部

贪吃蛇程序:GreedSnake.java(也是程序入口):importjava.awt.BorderLayout;importjava.awt.Canvas;importjava.awt.Color;importjava.awt.Container;importjava.awt.Graphics;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjava.util.Iterator;importjava.util.LinkedList;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassGreedSnakeimplementsKeyListener{JFramemainFrame;CanvaspaintCanvas;JLabellabelScore;//计分牌SnakeModelsnakeModel=null;//蛇publicstaticfinalintcanvasWidth=200;publicstaticfinalintcanvasHeight=300;publicstaticfinalintnodeWidth=10;publicstaticfinalintnodeHeight=10;//----------------------------------------------------------------------//GreedSnake():初始32313133353236313431303231363533e78988e69d8331333363366163化游戏界面//----------------------------------------------------------------------publicGreedSnake(){//设置界面元素mainFrame=newJFrame("GreedSnake");Containercp=mainFrame.getContentPane();labelScore=newJLabel("Score:");cp.add(labelScore,BorderLayout.NORTH);paintCanvas=newCanvas();paintCanvas.setSize(canvasWidth+1,canvasHeight+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();}//----------------------------------------------------------------------//keyPressed():按键检测//----------------------------------------------------------------------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_ADD:caseKeyEvent.VK_PAGE_UP:snakeModel.speedUp();//加速break;caseKeyEvent.VK_SUBTRACT:caseKeyEvent.VK_PAGE_DOWN:snakeModel.speedDown();//减速break;caseKeyEvent.VK_SPACE:caseKeyEvent.VK_P:snakeModel.changePauseState();//暂停或继续break;default:}//重新开始if(keyCode==KeyEvent.VK_R||keyCode==KeyEvent.VK_S||keyCode==KeyEvent.VK_ENTER){snakeModel.running=false;begin();}}//----------------------------------------------------------------------//keyReleased():空函数//----------------------------------------------------------------------publicvoidkeyReleased(KeyEvente){}//----------------------------------------------------------------------//keyTyped():空函数//----------------------------------------------------------------------publicvoidkeyTyped(KeyEvente){}//----------------------------------------------------------------------//repaint():绘制游戏界面(包括蛇和食物)//----------------------------------------------------------------------voidrepaint(){Graphicsg=paintCanvas.getGraphics();//drawbackgroundg.setColor(Color.WHITE);g.fillRect(0,0,canvasWidth,canvasHeight);//drawthesnakeg.setColor(Color.BLACK);LinkedListna=snakeModel.nodeArray;Iteratorit=na.iterator();while(it.hasNext()){Noden=(Node)it.next();drawNode(g,n);}//drawthefoodg.setColor(Color.RED);Noden=snakeModel.food;drawNode(g,n);updateScore();}//----------------------------------------------------------------------//drawNode():绘画某一结点(蛇身或食物)//----------------------------------------------------------------------privatevoiddrawNode(Graphicsg,Noden){g.fillRect(n.x*nodeWidth,n.y*nodeHeight,nodeWidth-1,nodeHeight-1);}//----------------------------------------------------------------------//updateScore():改变计分牌//----------------------------------------------------------------------publicvoidupdateScore(){Strings="Score:"+snakeModel.score;labelScore.setText(s);}//----------------------------------------------------------------------//begin():游戏开始,放置贪吃蛇//----------------------------------------------------------------------voidbegin(){if(snakeModel==null||!snakeModel.running){snakeModel=newSnakeModel(this,canvasWidth/nodeWidth,this.canvasHeight/nodeHeight);(newThread(snakeModel)).start();}}//----------------------------------------------------------------------//main():主函数//----------------------------------------------------------------------publicstaticvoidmain(String[]args){GreedSnakegs=newGreedSnake();}}Node.java:publicclassNode{intx;inty;Node(intx,inty){this.x=x;this.y=y;}}SnakeModel.java:importjava.util.Arrays;importjava.util.LinkedList;importjava.util.Random;importjavax.swing.JOptionPane;publicclassSnakeModelimplementsRunnable{GreedSnakegs;boolean[][]matrix;//界面数据保存在数组里LinkedListnodeArray=newLinkedList();Nodefood;intmaxX;//最大宽度intmaxY;//最大长度intdirection=2;//方向booleanrunning=false;inttimeInterval=200;//间隔时间(速度)doublespeedChangeRate=0.75;//速度改变程度booleanpaused=false;//游戏状态intscore=0;intcountMove=0;//UP和DOWN是偶数,RIGHT和LEFT是奇数publicstaticfinalintUP=2;publicstaticfinalintDOWN=4;publicstaticfinalintLEFT=1;publicstaticfinalintRIGHT=3;//----------------------------------------------------------------------//GreedModel():初始化界面//----------------------------------------------------------------------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;i0?scoreGet:10;countMove=0;food=createFood();matrix[food.x][food.y]=true;returntrue;}elsereturnfalse;//撞到身体}else//什么都没有碰到{nodeArray.addFirst(newNode(x,y));//加上头部matrix[x][y]=true;n=(Node)nodeArray.removeLast();//去掉尾部matrix[n.x][n.y]=false;countMove++;returntrue;}}returnfalse;//越界(撞到墙壁)}//----------------------------------------------------------------------//run():贪吃蛇运动线程//----------------------------------------------------------------------publicvoidrun(){running=true;while(running){try{Thread.sleep(timeInterval);}catch(Exceptione){break;}if(!paused){if(moveOn())//未结束{gs.repaint();}else//游戏结束{JOptionPane.showMessageDialog(null,"GAMEOVER","GameOver",JOptionPane.INFORMATION_MESSAGE);break;}}}running=false;}//----------------------------------------------------------------------//createFood():生成食物及放置地点//----------------------------------------------------------------------privateNodecreateFood(){intx=0;inty=0;do{Randomr=newRandom();x=r.nextInt(maxX);y=r.nextInt(maxY);}while(matrix[x][y]);returnnewNode(x,y);}//----------------------------------------------------------------------//speedUp():加快蛇运动速度//----------------------------------------------------------------------publicvoidspeedUp(){timeInterval*=speedChangeRate;}//----------------------------------------------------------------------//speedDown():放慢蛇运动速度//----------------------------------------------------------------------publicvoidspeedDown(){timeInterval/=speedChangeRate;}//----------------------------------------------------------------------//changePauseState():改变游戏状态(暂停或继续)//----------------------------------------------------------------------publicvoidchangePauseState(){paused=!paused;}}

本回答被网友采纳

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值