Maison > Java > javaDidacticiel > le corps du texte

Comment écrire le code pour implémenter le mini-jeu Snake War en Java

PHPz
Libérer: 2023-05-19 14:52:14
avant
2701 Les gens l'ont consulté

Affichage des effets

Comment écrire le code pour implémenter le mini-jeu Snake War en Java

Affichage des effets

1. Interface du jeu

Comment écrire le code pour implémenter le mini-jeu Snake War en Java

2. Score

Comment écrire le code pour implémenter le mini-jeu Snake War en Java

Introduction au projet

Contexte du projet

"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.

Exigences générales

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

Processus de mise en œuvre

(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.

Affichage du code

Classe principale : classe Démo

package Demo;
/**
 * 1.画出窗体对象
 * 
 * 
 * @author 青00-Java
 *
 */
public class Demo0 {
 
}
Copier après la connexion

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;
}
Copier après la connexion

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();
}
Copier après la connexion

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();
}
Copier après la connexion

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
		
	}
}
Copier après la connexion

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);
	}
 
}
Copier après la connexion

Structure du projet

Comment écrire le code pour implémenter le mini-jeu Snake War en Java

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal