亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java使用GUI實(shí)現(xiàn)貪吃蛇游戲

 更新時(shí)間:2022年04月02日 08:29:34   作者:.墨跡.  
這篇文章主要為大家詳細(xì)介紹了java使用GUI實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java使用GUI實(shí)現(xiàn)貪吃蛇游戲的具體代碼,供大家參考,具體內(nèi)容如下

整個(gè)代碼分為三部分

1.游戲開(kāi)始界面
2.data基本圖片的添加
3.面板,將小蛇畫(huà)到面板上

這是游戲完整界面

1. 游戲開(kāi)始界面

public class StartGame {
? ? public static void main(String[] args) {
? ? ? ? JFrame frame = new JFrame();

? ? ? ? frame.setBounds(10,10,900,720);
? ? ? ? frame.setResizable(false);

? ? ? ? frame.add(new GamePanel());
? ? ? ? frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
? ? ? ? frame.setVisible(true);

? ? }
}

2.data數(shù)據(jù)

public class Data {

? ? private static URL headerURL=Data.class.getResource("statics/header.png");
? ? public static ImageIcon header=new ImageIcon(headerURL);
? ? private static URL upURL=Data.class.getResource("statics/up.png");
? ? private static URL downURL=Data.class.getResource("statics/down.png");
? ? private static URL leftURL=Data.class.getResource("statics/left.png");
? ? private static URL rightURL=Data.class.getResource("statics/right.png");

? ? public static ImageIcon up=new ImageIcon(upURL);
? ? public static ImageIcon down=new ImageIcon(downURL);
? ? public static ImageIcon left=new ImageIcon(leftURL);
? ? public static ImageIcon right=new ImageIcon(rightURL);

? ? private static URL bodyURL=Data.class.getResource("statics/body.png");
? ? public static ImageIcon body=new ImageIcon(bodyURL);

? ? private static URL foodURL=Data.class.getResource("statics/food.png");
? ? public static ImageIcon food=new ImageIcon(foodURL);

}

3.面板繪制

public class GamePanel extends JPanel ?implements KeyListener, ActionListener {

? ? int length;
? ? int [] snakeX=new int[600];
? ? int [] snakeY=new int[500];
? ? String fx;

? ? int foodx;
? ? int foody;
? ? Random random=new Random();

? ? int score;


? ? boolean isStart=false;
? ? boolean isFail=false;

? ? Timer timer=new Timer(75,this);

? ? public GamePanel() {
? ? ? ? init();
? ? ? ? this.setFocusable(true);
? ? ? ? this.addKeyListener(this);
? ? ? ? timer.start();
? ? }

? ? public void init(){
? ? ? ? length=3;
? ? ? ? snakeX[0]=100;snakeY[0]=100;
? ? ? ? snakeX[1]=75;snakeY[1]=100;
? ? ? ? snakeX[2]=50;snakeY[2]=100;
? ? ? ? fx ="R";

? ? ? ? foodx=25+25*random.nextInt(34);
? ? ? ? foody=75+25*random.nextInt(24);
? ? ? ? score=0;
? ? }

? ? @Override
? ? protected void paintComponent(Graphics g) {
? ? ? ? super.paintComponent(g);

? ? ? ? this.setBackground(Color.WHITE);
? ? ? ? Data.header.paintIcon(this,g,25,11);
? ? ? ? g.fillRect(25,75,850,600);

? ? ? ? g.setColor(Color.white);
? ? ? ? g.setFont(new Font("微軟雅黑",Font.BOLD,18));
? ? ? ? g.drawString("長(zhǎng)度"+length,750,30);
? ? ? ? g.drawString("分?jǐn)?shù)"+score,750,50);

? ? ? ? Data.food.paintIcon(this,g,foodx,foody);

? ? ? ? if(fx.equals("R")){
? ? ? ? ? ? Data.right.paintIcon(this,g,snakeX[0],snakeY[0]);
? ? ? ? }else if(fx.equals("L")){
? ? ? ? ? ? Data.left.paintIcon(this,g,snakeX[0],snakeY[0]);
? ? ? ? }else if(fx.equals("U")){
? ? ? ? ? ? Data.up.paintIcon(this,g,snakeX[0],snakeY[0]);
? ? ? ? }else if(fx.equals("D")){
? ? ? ? ? ? Data.down.paintIcon(this,g,snakeX[0],snakeY[0]);
? ? ? ? }

? ? ? ? //Data.right.paintIcon(this,g,snakeX[0],snakeY[0]);
? ? ? ? for (int i = 1; i < length; i++) {
? ? ? ? ? ? Data.body.paintIcon(this,g,snakeX[i],snakeY[i]);
? ? ? ? }

? ? ? ? if(isStart==false){
? ? ? ? ? ? g.setColor(Color.white);
? ? ? ? ? ? g.setFont(new Font("宋體",Font.BOLD,40));
? ? ? ? ? ? g.drawString("想玩就嗯空格",300,300);
? ? ? ? }

? ? ? ? if(isFail){
? ? ? ? ? ? g.setColor(Color.red);
? ? ? ? ? ? g.setFont(new Font("微軟雅黑",Font.BOLD,40));
? ? ? ? ? ? g.drawString("人生不能重來(lái),請(qǐng)走好每一步",150,350);
? ? ? ? }
? ? }

? ? @Override
? ? public void keyPressed(KeyEvent e) {
? ? ? ? int keyCode = e.getKeyCode();
? ? ? ? if(keyCode == KeyEvent.VK_SPACE){
? ? ? ? ? ? if(isFail){
? ? ? ? ? ? ? ? isFail=false;
? ? ? ? ? ? ? ? init();
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? isStart=!isStart;
? ? ? ? ? ? }
? ? ? ? ? ? repaint();
? ? ? ? }
? ? ? ? if(keyCode==KeyEvent.VK_UP){
? ? ? ? ? ? fx="U";
? ? ? ? }else ?if(keyCode==KeyEvent.VK_DOWN){
? ? ? ? ? ? fx="D";
? ? ? ? }else ?if(keyCode==KeyEvent.VK_LEFT){
? ? ? ? ? ? fx="L";
? ? ? ? }else ?if(keyCode==KeyEvent.VK_RIGHT){
? ? ? ? ? ? fx="R";
? ? ? ? }

? ? }
? ? @Override
? ? public void actionPerformed(ActionEvent e) {
? ? ? ? if(isStart&&isFail==false){

? ? ? ? ? ? if(foodx==snakeX[0]&&foody==snakeY[0]){
? ? ? ? ? ? ? ? length++;

? ? ? ? ? ? ? ? score+=10;


? ? ? ? ? ? ? ? foodx=25+25*random.nextInt(34);
? ? ? ? ? ? ? ? foody=75+25*random.nextInt(24);
? ? ? ? ? ? }

? ? ? ? ? ? for (int i = length-1; i >0 ; i--) {
? ? ? ? ? ? ? ? ?snakeX[i]=snakeX[i-1];
? ? ? ? ? ? ? ? ?snakeY[i]=snakeY[i-1];
? ? ? ? ? ? }
? ? ? ? ? ? if(fx.equals("R")){
? ? ? ? ? ? ? ? snakeX[0] =snakeX[0]+25;
? ? ? ? ? ? ? ? if(snakeX[0]>850){ snakeX[0]=25; }
? ? ? ? ? ? }else if(fx.equals("L")){
? ? ? ? ? ? ? ? snakeX[0] =snakeX[0]-25;
? ? ? ? ? ? ? ? if(snakeX[0]<25){ snakeX[0]=850; }
? ? ? ? ? ? }else if(fx.equals("U")){
? ? ? ? ? ? ? ? snakeY[0]=snakeY[0]-25;
? ? ? ? ? ? ? ? if(snakeY[0]<75){snakeY[0]=650;}
? ? ? ? ? ? }else if(fx.equals("D")){
? ? ? ? ? ? ? ? snakeY[0]=snakeY[0]+25;
? ? ? ? ? ? ? ? if(snakeY[0]>650){snakeY[0]=75;}
? ? ? ? ? ? }

? ? ? ? ? ? for (int i = 1; i < length; i++) {
? ? ? ? ? ? ? ? if(snakeY[0]==snakeY[i]&&snakeX[0]==snakeX[i]){
? ? ? ? ? ? ? ? ? ? isFail=true;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }

? ? ? ? ? ? repaint();
? ? ? ? }
? ? ? ? timer.start();
? ? }


? ? @Override
? ? public void keyTyped(KeyEvent e) {

? ? }
? ? @Override
? ? public void keyReleased(KeyEvent e) {

? ? }


}

小蛇的各個(gè)部位參數(shù)如下

頭部尺寸

身體尺寸

食物尺寸

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中實(shí)現(xiàn)視頻處理以及播放功能代碼詳解

    java中實(shí)現(xiàn)視頻處理以及播放功能代碼詳解

    這篇文章主要給大家介紹了關(guān)于java中實(shí)現(xiàn)視頻處理以及播放功能的相關(guān)資料,最近要實(shí)現(xiàn)一套音視頻播放程序,所以這里給大家總結(jié)下,需要的朋友可以參考下
    2023-09-09
  • Java 如何解析key為動(dòng)態(tài)的json操作

    Java 如何解析key為動(dòng)態(tài)的json操作

    這篇文章主要介紹了Java 如何解析key為動(dòng)態(tài)的json操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn)

    JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn)

    這篇文章主要介紹了JAVA Iterator接口與增強(qiáng)for循環(huán)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot實(shí)現(xiàn)Md5對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)加密的示例

    SpringBoot實(shí)現(xiàn)Md5對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)加密的示例

    本文主要介紹了SpringBoot實(shí)現(xiàn)Md5對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)加密的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java動(dòng)態(tài)代理四種實(shí)現(xiàn)方式詳解

    Java動(dòng)態(tài)代理四種實(shí)現(xiàn)方式詳解

    這篇文章主要介紹了Java四種動(dòng)態(tài)代理實(shí)現(xiàn)方式,對(duì)于開(kāi)始學(xué)習(xí)java動(dòng)態(tài)代理或者要復(fù)習(xí)java動(dòng)態(tài)代理的朋友來(lái)講很有參考價(jià)值,有感興趣的朋友可以參考一下
    2021-04-04
  • 詳解SpringBoot定時(shí)任務(wù)功能

    詳解SpringBoot定時(shí)任務(wù)功能

    這篇文章主要介紹了SpringBoot定時(shí)任務(wù)功能詳細(xì)解析,這次的功能開(kāi)發(fā)過(guò)程中也算是對(duì)其內(nèi)涵的進(jìn)一步了解,以后遇到定時(shí)任務(wù)的處理也更清晰,更有效率了,對(duì)SpringBoot定時(shí)任務(wù)相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-05-05
  • Java中使用BeanMap將對(duì)象轉(zhuǎn)為Map詳解

    Java中使用BeanMap將對(duì)象轉(zhuǎn)為Map詳解

    這篇文章主要介紹了Java中使用BeanMap將對(duì)象轉(zhuǎn)為Map詳解,BeanMap?是?Apache?Commons?BeanUtils?庫(kù)中的一個(gè)類(lèi),BeanMap?可以將?Java?對(duì)象的屬性作為鍵,屬性值作為對(duì)應(yīng)的值,存儲(chǔ)在一個(gè)?Map?中,它提供了一種將?Java?對(duì)象轉(zhuǎn)換為?Map?的方式,需要的朋友可以參考下
    2024-01-01
  • Java接口中盡量避免使用數(shù)組

    Java接口中盡量避免使用數(shù)組

    這篇文章主要介紹了Java接口中盡量避免使用數(shù)組的建議,根據(jù)實(shí)際示例展示了接口中使用數(shù)組而造成的影響程序速度的現(xiàn)象,需要的朋友可以參考下
    2015-07-07
  • java鎖升級(jí)過(guò)程過(guò)程詳解

    java鎖升級(jí)過(guò)程過(guò)程詳解

    這篇文章主要介紹了Java鎖升級(jí)的實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • Idea為java程序添加啟動(dòng)參數(shù)(含:VM?options、Program?arguments、Environment?variable)

    Idea為java程序添加啟動(dòng)參數(shù)(含:VM?options、Program?arguments、Environme

    設(shè)置啟動(dòng)參數(shù)的意義就是當(dāng)啟動(dòng)程序時(shí),程序會(huì)優(yōu)先讀取idea的配置參數(shù),這樣就可以不用修改配置文件,下面這篇文章主要給大家介紹了關(guān)于Idea為java程序添加啟動(dòng)參數(shù)(含:VM?options、Program?arguments、Environment?variable)的相關(guān)資料,需要的朋友可以參考下
    2022-12-12

最新評(píng)論