Heim > Java > javaLernprogramm > So schreiben Sie den Code zur Implementierung des Snake War-Minispiels in Java

So schreiben Sie den Code zur Implementierung des Snake War-Minispiels in Java

PHPz
Freigeben: 2023-05-19 14:52:14
nach vorne
2710 Leute haben es durchsucht

Effektanzeige

So schreiben Sie den Code zur Implementierung des Snake War-Minispiels in Java

Effektanzeige

1. Spieloberfläche

So schreiben Sie den Code zur Implementierung des Snake War-Minispiels in Java

2. Ergebnis

So schreiben Sie den Code zur Implementierung des Snake War-Minispiels in Java

Projekteinführung

Projekthintergrund

"Glutty Das Spiel „Snake Battle“ ist A Es ist ein klassisches Spiel, das einfach zu bedienen und äußerst unterhaltsam ist. Dieses Projekt basiert auf der Java-Technologie und hat ein „Snake“-Spiel mit einfacher Bedienung, schöner Benutzeroberfläche und vollständigen Funktionen entwickelt. "Spiel. Dieses Spiel wurde entwickelt, um das Erlernen der Java-Technologie und das Verständnis des Softwareentwicklungsprozesses zu erleichtern.

Allgemeine Anforderungen

Dieses System wird hauptsächlich verwendet, um die Grundfunktionen des Snake-Spiels abzuschließen, und Benutzer können üben und sich selbst unterhalten. Folgende Voraussetzungen müssen erfüllt sein:

(1) Benutze die Richtungstasten, um die Laufrichtung der Schlange zu ändern.
(2) Die Leertaste pausiert das Spiel oder setzt es fort und generiert an zufälligen Orten Nahrung.
(3) Nach dem Essen verwandelt es sich in einen neuen Schlangenkörper (die Länge des Schlangenkörpers wird länger und das Spiel geht weiter).

Implementierungsprozess

(1) Zeichnen Sie das Formularobjekt.
(2) Statisches UI-Design (einschließlich Schlange, Essen, Spielbereich und Titelbereich).
(3) Verwenden Sie Tastatur-Hörereignisse und Timer, um die Bewegung der Schlange zu erkennen.
(4) Erkenntnis der Kollision zwischen kleiner Schlange und Futter.
(5) Definieren Sie eine Variable zum Speichern der Länge der Schlange und durchlaufen Sie das Array, um die Funktion der Vergrößerung des Schlangenkörpers zu realisieren.
(6) Beendigungsbedingung: Wenn die Spielpunkte den angegebenen Punktestand erreichen, wird das Spiel beendet.

Codeanzeige

Hauptklasse: Demo-Klasse

package Demo;
/**
 * 1.画出窗体对象
 * 
 * 
 * @author 青00-Java
 *
 */
public class Demo0 {
 
}
Nach dem Login kopieren

MyPanel-Klassenkonstruktionsmethode

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;
}
Nach dem Login kopieren

Initialisierungsmethode

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();
}
Nach dem Login kopieren

Zeichnungsmethode

	@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();
}
Nach dem Login kopieren

Timer-Ausführungsmethode

@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
		
	}
}
Nach dem Login kopieren

Framework-UI-Klasse

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);
	}
 
}
Nach dem Login kopieren

Projektstruktur

So schreiben Sie den Code zur Implementierung des Snake War-Minispiels in Java

Das obige ist der detaillierte Inhalt vonSo schreiben Sie den Code zur Implementierung des Snake War-Minispiels in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage