Maison >Java >javaDidacticiel >Comment écrire le code pour implémenter le mini-jeu Snake War en Java
Affichage des effets
1. Interface du jeu
2. Score
"Glutty Le jeu "Snake Battle" est un jeu classique, il est facile à utiliser et très divertissant. Il a été profondément apprécié par les joueurs informatiques depuis la mise en œuvre de l'ordinateur. Ce projet est basé sur la technologie Java et a développé un jeu "Snake" avec une utilisation simple, une belle interface et des fonctions complètes. "jeu. Ce jeu a été développé pour aider à apprendre la technologie Java et à comprendre le processus de développement logiciel.
Ce système est principalement utilisé pour effectuer les opérations de base du jeu Snake, et les utilisateurs peuvent s'entraîner et se divertir. Les conditions suivantes doivent être remplies :
(1) Utilisez les touches de direction pour changer la direction de course du serpent.
(2) La barre d'espace met en pause ou reprend le jeu et génère de la nourriture à des endroits aléatoires.
(3) Après avoir mangé de la nourriture, il se transforme en un nouveau corps de serpent (la longueur du corps du serpent s'allonge et le jeu continue).
(1) Dessinez l'objet de formulaire.
(2) Conception d'interface utilisateur statique (y compris le serpent, la nourriture, la zone de jeu et la zone de titre).
(3) Utilisez les événements d'écoute du clavier et les minuteries pour réaliser le mouvement du serpent.
(4) Réalisation de collision entre le petit serpent et la nourriture.
(5) Définissez une variable pour stocker la longueur du serpent et parcourez le tableau pour réaliser la fonction d'augmentation du corps du serpent.
(6) Condition de sortie : lorsque les points du jeu atteignent le score spécifié, le jeu se termine.
Classe principale : classe Démo
package Demo; /** * 1.画出窗体对象 * * * @author 青00-Java * */ public class Demo0 { }
Méthode de construction de la classe 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; }
Méthode d'initialisation
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(); }
Méthode de dessin
@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(); }
Méthode d'exécution du minuteur
@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 } }
Classe Framework Ui
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); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!