Rumah  >  Artikel  >  Java  >  Bagaimana untuk menulis kod untuk melaksanakan permainan mini Perang Ular di Jawa

Bagaimana untuk menulis kod untuk melaksanakan permainan mini Perang Ular di Jawa

PHPz
PHPzke hadapan
2023-05-19 14:52:142613semak imbas

Paparan kesan

Bagaimana untuk menulis kod untuk melaksanakan permainan mini Perang Ular di Jawa

Paparan kesan

1. Antara muka permainan

Bagaimana untuk menulis kod untuk melaksanakan permainan mini Perang Ular di Jawa

2. Skor

Bagaimana untuk menulis kod untuk melaksanakan permainan mini Perang Ular di Jawa

Pengenalan Projek

Latar Belakang Projek

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.

Keperluan am

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

Proses pelaksanaan

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

Paparan kod

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);
	}
 
}

Struktur projek

Bagaimana untuk menulis kod untuk melaksanakan permainan mini Perang Ular di Jawa

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam