Rumah > Java > javaTutorial > teks badan

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

PHPz
Lepaskan: 2023-05-19 14:52:14
ke hadapan
2701 orang telah melayarinya

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 {
 
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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();
}
Salin selepas log masuk

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();
}
Salin selepas log masuk

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
		
	}
}
Salin selepas log masuk

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);
	}
 
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan