91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java實現貪吃蛇大作戰小游戲的代碼怎么寫

發布時間:2022-07-22 09:53:59 來源:億速云 閱讀:120 作者:iii 欄目:開發技術

本篇內容主要講解“Java實現貪吃蛇大作戰小游戲的代碼怎么寫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java實現貪吃蛇大作戰小游戲的代碼怎么寫”吧!

 效果展示

Java實現貪吃蛇大作戰小游戲的代碼怎么寫

效果展示

一、游戲界面

Java實現貪吃蛇大作戰小游戲的代碼怎么寫

二、得分情況

Java實現貪吃蛇大作戰小游戲的代碼怎么寫

 項目介紹

項目背景

“貪吃蛇大作戰”游戲是一個經典的游戲,它因操作簡單、娛樂性強,自從計算機實現以來,深受廣大電腦玩家的喜愛,本項目基于Java技術,開發了一個 操作簡單、界面美觀、功能較齊全 的“貪吃蛇”游戲。通過本游戲的開發,達到學習Java技術和熟悉軟件開發流程的目的。

總體需求

 本系統主要是完成貪吃蛇游戲的基本操作,用戶可自己練習和娛樂。需要滿足以下幾點要求:

(1)利用方向鍵來改變蛇的運行方向。
(2)空格鍵暫停或繼續游戲,并在隨機的地方產生食物。
(3)吃到食物就變成新的蛇體(蛇身長度變長,游戲繼續)。

實現過程

(1)繪制窗體對象。
(2)靜態UI設計(包括小蛇,食物,游戲區域和標題區域)。
(3)使用鍵盤監聽事件和定時器實現小蛇的移動。
(4)小蛇與食物碰撞的實現。
(5)定義變量存放小蛇長度,遍歷數組實現小蛇身體的增加功能。
(6)退出條件:當游戲積分到達指定分數,游戲退出。

代碼展示

主類 :Demo類

package Demo;
/**
 * 1.畫出窗體對象
 * 
 * 
 * @author 青00-Java
 *
 */
public class Demo0 {
 
}

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

初始化方法

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

繪制方法

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

定時器執行方法

@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
		
	}
}

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

項目結構

Java實現貪吃蛇大作戰小游戲的代碼怎么寫

到此,相信大家對“Java實現貪吃蛇大作戰小游戲的代碼怎么寫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新邵县| 来安县| 彰武县| 蒲江县| 东乌珠穆沁旗| 巴林右旗| 乐安县| 永州市| 响水县| 大姚县| 含山县| 高阳县| 光山县| 阿鲁科尔沁旗| 肃宁县| 岐山县| 定南县| 黎平县| 和林格尔县| 思南县| 怀来县| 江西省| 宜君县| 河西区| 乌拉特后旗| 章丘市| 邵东县| 枣庄市| 普兰店市| 汤原县| 通许县| 新沂市| 青冈县| 阿瓦提县| 和政县| 双桥区| 辉县市| 宝清县| 聂荣县| 邵东县| 青铜峡市|