Archivo de producción "Miracle Bud"

El primer swing de etapa-java

Acabo de terminar de aprender la GUI de Java, quiero ser un juego y practicar mis manos. Así que comencé a hacer "Miracle Lei Lei" y
Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí
usé Aseprite para dibujar algunos villanos y fondos de píxeles.
Sin embargo, debido a que el pintor es demasiado pobre, el villano de píxeles camina realmente fantasmas y animales .
También descubrí que la limitación de java-swing para escribir juegos es demasiado grande,
así que dejaré de usar Escrito en Java, comience a aprender cocos hoy y
pegue el código y las imágenes de tiempo de ejecución escritas hasta ahora

Varios diseños abandonados

Diseño de imagen de primera edición
Segunda edicionMover hacia arriba


¿Por qué es tan feo TT, lo siento por mi hija, pero mis habilidades de dibujo son demasiado malas,
Inserte la descripción de la imagen aquí
esta es la verdadera belleza de su hija

Código del juego

El juego comienza

package Game;

import javax.swing.*;

public class StartGame {
    public static void main(String[] args) {
                JFrame jFrame = new JFrame("假如谢蕾蕾登上鸟巢我就死而无憾了");
                jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                jFrame.setBounds(10, 10, 800, 600);
                jFrame.setVisible(true);
                jFrame.setResizable(false);
                jFrame.add(new GamePanel());
            }
 }

Centro de datos

package Game;

import javax.swing.*;
import java.net.URL;
//数据中心
public class Data {

    
    public static URL backgroundURL  =  Data.class.getResource("/static/bggg.png");
    public static ImageIcon bg=new ImageIcon(backgroundURL);
	
	//小人运动
    public static URL yd1URL  =  Data.class.getResource("/static/R1.png");
    public static ImageIcon yd1=new ImageIcon(yd1URL);

    public static URL leftURL  =  Data.class.getResource("/static/L1.png");
    public static ImageIcon  left=new ImageIcon(leftURL);

    public static URL yd2LURL  =  Data.class.getResource("/static/L2.png");
    public static ImageIcon yd2L=new ImageIcon(yd2LURL);

    public static URL yd2RURL  =  Data.class.getResource("/static/R2.png");
    public static ImageIcon  yd2R=new ImageIcon(yd2RURL);

	//对话框
    public static URL TalkURL  =  Data.class.getResource("/static/talk.png");
    public static ImageIcon  talk=new ImageIcon(TalkURL);

	//对话时出现的背景
    public static URL BG1URL  =  Data.class.getResource("/static/bg1.png");
    public static ImageIcon  BG1=new ImageIcon(BG1URL);

    public static URL BG2URL  =  Data.class.getResource("/static/bg2.png");
    public static ImageIcon  BG2=new ImageIcon(BG2URL);

    public static URL BG3URL  =  Data.class.getResource("/static/bg3.png");
    public static ImageIcon  BG3=new ImageIcon(BG3URL);

}

Panel de juego

package Game;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import sun.font.FontRunIterator;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Timer;
import java.util.TimerTask;

public class GamePanel extends JPanel  implements KeyListener, ActionListener {
    int LLX;//蕾蕾的x坐标
    int LLY;//蕾蕾的Y坐标
    String direction;
    boolean yd;
    int Xspeed;
    int Yspeed;
    boolean talkStop;//对话停止判断
    int[] talk={0};
    String[] str=new String[34];//对话框的里的对话
    int i;//第几句对话


  java.util.Timer timer =new Timer(true);

    public GamePanel() {
        init();
        //获得焦点和键盘事件
        this.setFocusable(true);//获得焦点事件
        this.addKeyListener(this);//获得键盘监听事件
    }

    public void  init(){
         LLX=250;
         LLY=450;
         direction="R";
         yd=true;
         Xspeed=10;
         Yspeed=10;
         talkStop=false;
         //对话
         i=0;
        str[0]="喵~喵~喵~~~";
        str[1]="luna似乎十分不安地在房间里一直打圈的走";
        str[2]="\"我该怎么和她说呢\"";
        str[3]="睡梦中,谢蕾蕾的耳朵捕捉到了几句低沉的女声";
        str[4]="\"这种事要怎么说才不会吓到她\"";
        str[5]="\"啊啊啊啊 天呐爸爸 我为什么要写那篇小说\"";
        str[6]="谢蕾蕾从被子里探出头,想探寻房间中声音的来源";
        str[7]="不像是从隔壁传来,但是...房间里没有别人啊";
        str[8]="那么...只可能是...";
        str[9]="\"蕾蕾你醒啦\"";
        str[10]="luna挥了挥爪子";
        str[11]="......";
        str[12]="谢蕾蕾揉了揉眼睛";
        str[13]="\"我在做梦吧?\"";
        str[14]="\"蕾蕾...那个...我\"";
        str[15]="啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!";
        str[16]="\"啊啊啊啊啊啊啊啊啊啊啊啊蕾蕾你别叫\"";
        str[17]="\"听我说\"";
        str[18]="\"这一切都要从一场不知道什么时候能开学的寒假说起\"";
        str[19]="\"我本来只是一只幸福的戆卵\"";
        str[20]="\"我还记得那天...\"";
        str[21]="\"那天,平静无风\"";
        str[22]="\"不是,那天我刚看完《青春没我》\"";
        str[23]="\"被气得吃了三瓶速效救心丸\"";
        str[24]="\"因为过于生气,就上河组写了篇爽文\"";
        str[25]="\"《假如谢蕾蕾登上鸟巢我就死而无憾了》\"";
        str[26]="\"没想到我竟然火了\"";
        str[28]="\"全中国三万戆卵都在看我的文\"";
        str[27]="\"四大 沙儿雕 创青河都转了\"";
        str[29]="\"也许是由于戆卵的怨念过深\"";
        str[30]="老天让我穿进文里";
        str[31]="要想回到现实世界";
        str[32]="只有完成终极目标——";
        str[33]="——登上鸟巢";
    }

    protected void paintComponent(Graphics g){
        super.paintComponent(g);//清屏,不使用的话会出现闪烁
        this.setBackground(Color.black);
        if(i==24||i==25||i==26){
            Data.BG1.paintIcon(this, g, 0, 0);
        }
        if(i==27||i==28){
            Data.BG2.paintIcon(this, g, 0, 0);
        }
        if(i==33){
            Data.BG3.paintIcon(this, g, 0, 0);
        }
        if(talkStop==true) {
            Data.bg.paintIcon(this, g, 0, 0);
        }

        if(talkStop==false) {
            Data.talk.paintIcon(this, g, 0, 365);
            g.setColor(Color.black);
            g.setFont(new Font("微软雅黑", Font.BOLD, 20));
            //对话
            g.drawString(str[i], 100, 470);

        }




        if(direction.equals("R")&&(yd==false)&&talkStop==true){
            Data.yd1.paintIcon(this,g,LLX,LLY);
            yd=!yd;
        } else if(direction.equals("R")&&(yd==true)&&talkStop==true){
            Data.yd2R.paintIcon(this,g,LLX,LLY);
            yd=!yd;
        } else if(direction.equals("L")&&(yd==false)&&talkStop==true){
            Data.left.paintIcon(this,g,LLX,LLY);
            yd=!yd;
        } else if(direction.equals("L")&&(yd==true)&&talkStop==true){
            Data.yd2L.paintIcon(this,g,LLX,LLY);
            yd=!yd;
        }

        if(LLX==50&&LLY==420){

        }

    }

    @Override
    public void actionPerformed(ActionEvent e) {

    }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
        int KeyCode = e.getKeyCode();
        if (KeyCode == KeyEvent.VK_SPACE) {
            if(talkStop==false){
                i++;
                if(i==str.length){
                    talkStop=true;
                }
            }else{
            LLY=LLY-40;
            timer.schedule(new TimerTask() {
                public void run() {
                    LLY=LLY+40;
                }
            }, 5 );
            }

            repaint();
        } else if (KeyCode == KeyEvent.VK_LEFT) {
            direction="L";
            if(LLX>=0){LLX-=10;}
            repaint();
        } else if (KeyCode == KeyEvent.VK_DOWN) {
            if(LLY<500){
                LLY+=10;
                repaint();
            }
        } else if (KeyCode == KeyEvent.VK_UP) {
            if(LLY>400){
                LLY-=10;
                repaint();
            }
        }else if (KeyCode == KeyEvent.VK_RIGHT) {
            if(LLX<670){LLX+=10;}
            direction="R";
            repaint();
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {

    }
}

Interfaz de juego

Ventana durante la conversación
Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Comienza a aprender cocos hoy

Publicado 9 artículos originales · elogiado 1 · visita 80

Supongo que te gusta

Origin blog.csdn.net/weixin_43968392/article/details/105578395
Recomendado
Clasificación