Paparan kesan
1. Antara muka permainan
2. Skor
Permainan "Snake Battle" ialah Permainan klasik , ia mudah dikendalikan dan sangat menghiburkan Ia amat digemari oleh pemain komputer sejak kemunculan komputer Berdasarkan teknologi Java, projek ini telah membangunkan permainan "Snake" dengan operasi yang mudah, antara muka yang cantik dan fungsi yang lengkap . Permainan ini dibangunkan untuk membantu mempelajari teknologi Java dan memahami proses pembangunan perisian.
Sistem ini digunakan terutamanya untuk melengkapkan operasi asas permainan Snake, dan pengguna boleh berlatih dan menghiburkan diri mereka sendiri. Keperluan berikut perlu dipenuhi:
(1) Gunakan kekunci arah untuk menukar arah larian ular.
(2) Kekunci ruang menjeda atau menyambung semula permainan dan menjana makanan di tempat rawak.
(3) Selepas makan makanan, ia bertukar menjadi badan ular yang baru (panjang badan ular menjadi lebih panjang dan permainan diteruskan).
(1) Lukis objek bentuk.
(2) Reka bentuk UI statik (termasuk ular, makanan, kawasan permainan dan kawasan tajuk).
(3) Gunakan acara mendengar papan kekunci dan pemasa untuk merealisasikan pergerakan ular.
(4) Kesedaran perlanggaran antara ular kecil dan makanan.
(5) Tentukan pembolehubah untuk menyimpan panjang ular, dan melintasi tatasusunan untuk merealisasikan fungsi meningkatkan badan ular.
(6) Syarat keluar: Apabila mata permainan mencapai markah yang ditentukan, permainan akan keluar.
Kelas utama: Kelas demo
package Demo; /** * 1.画出窗体对象 * * * @author 青00-Java * */ public class Demo0 { }
Kaedah pembinaan kelas MyPanel
package Demo; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.Random; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.Timer; //画布类 public class MyPanel extends JPanel implements KeyListener,ActionListener{//继承 private static final Component This = null; //键盘监听交互接口 int length; int score; int[] snakeX=new int[500];//坐标 int[] snakeY=new int[500]; String fx; boolean ifStart=false; //定时器 Timer timer =new Timer(100,this); int foodx; int foody; Random random =new Random(); public MyPanel(){ init(); //添加监听事件 this.setFocusable(true); this.addKeyListener(this); score=0; }
Kaedah permulaan
public void init(){ length=3; fx="r"; //初始化小蛇的位置 snakeX[0]=100; snakeY[0]=150; snakeX[1]=75; snakeY[1]=150; snakeX[2]=50; snakeY[2]=150; foodx=25+25*random.nextInt(57); foody=125+25*random.nextInt(27); System.out.println(foodx); System.out.println(foody); timer.start(); }
Lukisan Kaedah
@Override protected void paintComponent(Graphics g){//画笔对象 super.paintComponent(g); //绘制顶部的标题 new ImageIcon("C:/Users/Desktop/img/title2.png").paintIcon(this,g,25,11);//创建对象 //绘制游戏区域 g.fillRect(25, 125, 1450, 700); //绘制小蛇 //蛇头 new ImageIcon("C:/Users/Desktop/img/l.png").paintIcon(this, g, snakeX[0], snakeY[0]); //蛇身 for(int i=1;i<length;i++){ new ImageIcon("C:/Users/Desktop/img/body.png").paintIcon(This, g, snakeX[i], snakeY[i]); } //游戏的提示语 if(ifStart==false){ g.setColor(Color.white); g.setFont(new Font("微软雅黑",Font.BOLD,40)); g.drawString("按压空格键继续游戏", 550,500); g.drawString("无尽模式", 650,400); } //画出食物的位置 new ImageIcon("C:/Users/Desktop/img/body.png").paintIcon(this, g, foodx, foody); } @Override//按压 public void keyPressed(KeyEvent e) { int keyCode=e.getKeyCode(); if(keyCode==KeyEvent.VK_SPACE){ ifStart=!ifStart; } if(ifStart==true){ if(keyCode==KeyEvent.VK_LEFT&&fx!="r"){ fx="l"; }else if(keyCode==KeyEvent.VK_RIGHT&&fx!="l"){ fx="r"; }else if(keyCode==KeyEvent.VK_UP&&fx!="d"){ fx="u"; }else if(keyCode==KeyEvent.VK_DOWN&&fx!="u"){ fx="d"; } } repaint(); }
Kaedah pelaksanaan pemasa
@Override public void actionPerformed(ActionEvent e) { //改变蛇的位置 if(ifStart==true){ for(int i=length-1;i>0;i--){ snakeX[i]=snakeX[i-1]; snakeY[i]=snakeY[i-1]; } if(fx.equals("l")){ snakeX[0]=snakeX[0]-25; if(snakeX[0]<25){ snakeX[0]=1450; } }else if(fx.equals("r")){ snakeX[0]=snakeX[0]+25; if(snakeX[0]>1450){ snakeX[0]=25; } }else if(fx.equals("u")){ snakeY[0]=snakeY[0]-25; if(snakeY[0]<120){ snakeY[0]=800; } }else if(fx.equals("d")){ snakeY[0]=snakeY[0]+25; if(snakeY[0]>800){ snakeY[0]=120; } } //判断是否吃了食物 if(snakeX[0]==foodx&&snakeY[0]==foody){ length++; score++; if(score==100){ ifStart=!ifStart; } foodx=25+25*random.nextInt(57); foody=125+25*random.nextInt(27); System.out.print("当前食物坐标("+foodx+","); System.out.print(foody+")"); System.out.println("|||当前分数:"+score+" "); } repaint(); } timer.start(); } @Override public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub } @Override public void keyTyped(KeyEvent arg0) { // TODO Auto-generated method stub } }
Kelas Ui Rangka Kerja
package Demo; import javax.swing.JFrame; public class Ui { public static void main(String[] args){ JFrame frame=new JFrame("无尽版贪吃蛇"); frame.setSize(1500, 900); frame.setLocationRelativeTo(null);//居中显示 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(true); frame.add(new MyPanel()); frame.setVisible(true); } }
Atas ialah kandungan terperinci Bagaimana untuk menulis kod untuk melaksanakan permainan mini Perang Ular di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!