《仙剑奇侠传柔情版》Java的简单实现(二)

基于《仙剑奇侠传柔情版》Java的简单实现(二)

2018-12-02 by louis

 


 

需要上次的GameFrame.class中窗口框架承载:https://www.cnblogs.com/louis6575/p/10051873.html

当时没有学过JButton,于是当时就把未选中的【开发团队】【旧的回忆】【新的开始】Ps到背景层,然后把选中状态存为三张图片,并使用以下代码进行读取:

  1 package firstDemo;
  2 
  3 // 为更好说明解决方式,现已在源码上进行关键部分抽取
  4 
  5 import javax.imageio.ImageIO;
  6 import javax.swing.*;
  7 import java.awt.*;
  8 import java.awt.event.KeyEvent;
  9 import java.awt.event.KeyListener;
 10 import java.io.File;
 11 import java.io.IOException;
 12 
 13 public class GamePanel extends JPanel implements Runnable, KeyListener {
 14 
 15     int startX = 0,startY = 0;
 16     int startButtonX = 250,startButtonY = 125;
 17     Image[] startButtonImages = new Image[3];
 18     Image startImage;
 19     boolean isStartShow = true;
 20     boolean isstartButtonShow = true;
 21 
 22     int startButtonIndex = 0;
 23     private int start_DIST = 120,resume_DIST = 109,limUP = 240,limDOWN = 566,limRIGHT = 250,limLEFT = 10;
 24 
 25     public GamePanel() {
 26         // 加载背景层,测试图片要求:图片像素大小为1024x768
 27         try {
 28             startImage = ImageIO.read(new File("仙剑奇侠传游戏素材/开始游戏/start0.png"));
 29         } catch (IOException e) {
 30             e.printStackTrace();
 31         }
 32         // 加载自制按钮图标,测试图片要求:图片大小187x630
 33         for (int i = 0; i < startButtonImages.length; i++) {
 34             try {
 35                 startButtonImages[i] = ImageIO.read(new File("仙剑奇侠传游戏素材/开始游戏/"+i+".png"));
 36             } catch (IOException e) {
 37                 e.printStackTrace();
 38             }
 39         }
 40     }
 41 
 42     //绘画方法
 43     public void paint(Graphics g) {    //绘画
 44         super.paint(g);    //清空原有画面,重新画dialogImage
 45         if(isStartShow){
 46             g.drawImage(startImage,startX,startY,this);
 47             if(isstartButtonShow){
 48                 g.drawImage(startButtonImages[startButtonIndex],startButtonX,startButtonY,this);
 49             }
 50         }
 51     }
 52 
 53     @Override
 54     public void keyTyped(KeyEvent e) {
 55 
 56     }
 57 
 58     @Override
 59     public void keyPressed(KeyEvent e) {
 60         int KeyCode = e.getKeyCode();
 61         if(KeyCode == KeyEvent.VK_UP){
 62 
 63         } else if(KeyCode == KeyEvent.VK_DOWN){
 64 
 65 
 66         } else if(KeyCode == KeyEvent.VK_LEFT){
 67             if(isStartShow){
 68                 startButtonX -= start_DIST;
 69                 startButtonIndex++;
 70                 if(startButtonIndex > startButtonImages.length-1){
 71                     startButtonIndex = 0;
 72                     startButtonX = limRIGHT;
 73                 }
 74             }
 75         } else if(KeyCode == KeyEvent.VK_RIGHT){
 76             if(isStartShow){    //RIGHT按钮切换开始游戏界面选项
 77                 startButtonX += start_DIST;
 78                 startButtonIndex--;
 79                 if(startButtonIndex < 0){
 80                     startButtonIndex = 2;
 81                     startButtonX = limLEFT;
 82                 }
 83             }
 84         } repaint();
 85     }
 86 
 87     @Override
 88     public void keyReleased(KeyEvent e) {
 89 
 90     }
 91 
 92     @Override
 93     public void run() {
 94         while(true) {
 95             try {
 96                 Thread.sleep(200);
 97             } catch (InterruptedException e) {
 98                 e.printStackTrace();
 99             } repaint();
100         }
101     }
102 }

 

 原素材:

背景:https://www.cnblogs.com/images/cnblogs_com/louis6575/1354506/t_start0.png

新的开始:https://www.cnblogs.com/images/cnblogs_com/louis6575/1354506/t_0.png

旧的回忆:https://www.cnblogs.com/images/cnblogs_com/louis6575/1354506/t_1.png

开发团队:https://www.cnblogs.com/images/cnblogs_com/louis6575/1354506/t_2.png

    

 

 

 

猜你喜欢

转载自www.cnblogs.com/louis6575/p/10056305.html
今日推荐