Java简易版王者

第一步是创建项目 项目名自拟

第二部创建个包名 来规范class

fddb27fc77ad409d9a88da425149f0b4.png  

然后是创建类 GameFrame   运行类

 
  1. package com.sxt;

  2.  
  3. import java.awt.Graphics;

  4. import java.awt.Image;

  5. import java.awt.Toolkit;

  6. import java.awt.event.ActionEvent;

  7. import java.awt.event.ActionListener;

  8. import java.awt.event.KeyAdapter;

  9. import java.awt.event.KeyEvent;

  10. import java.util.ArrayList;

  11.  
  12. import javax.swing.JButton;

  13. import javax.swing.JFrame;

  14.  
  15. public class GameFrame extends JFrame {

  16. // 窗口尺寸

  17. private int windowWidth = 1400;

  18. private int windowHeight = 700;

  19. // 双缓冲图片

  20. private Image offScreenImage = null;

  21. // 攻击图片

  22. private Image attack = Toolkit.getDefaultToolkit().getImage("img/attack.jpg");

  23. // 游戏背景

  24. Background background = new Background(this);

  25. // 游戏玩家

  26. Champion player = new ChampionHouyi(this);

  27. // 双方小兵

  28. MinionBlue mb = new MinionBlue(this);

  29. MinionRed mr = new MinionRed(this);

  30. // 防御塔

  31. Turret turret = new Turret(this);

  32. // 攻击按钮

  33. JButton attackButton;

  34. // 游戏元素列表

  35. ArrayList objList = new ArrayList();

  36. ArrayList redList = new ArrayList();// 红色方

  37. ArrayList blueList = new ArrayList();// 蓝色方

  38. ArrayList removeList = new ArrayList();// 存放将要删除的元素

  39.  
  40. public void launch() {

  41. // 设置尺寸

  42. setSize(windowWidth, windowHeight);

  43. // 窗口居中

  44. setLocationRelativeTo(null);

  45. // 关闭事件

  46. setDefaultCloseOperation(3);

  47. // 用户不能调整窗口大小

  48. setResizable(false);

  49. // 标题

  50. setTitle("尚学堂王者荣耀");

  51. // 窗口可见

  52. setVisible(true);

  53. // 添加键盘监视器

  54. this.addKeyListener(new GameFrame.KeyMonitor());

  55. // 添加游戏元素

  56. objList.add(background);

  57. objList.add(player);

  58. objList.addAll(turret.turretList);

  59. blueList.add(turret.turretList.get(0));

  60. redList.add(turret.turretList.get(4));

  61.  
  62. /**

  63. * 攻击按钮

  64. */

  65. attackButton = new JButton();

  66. attackButton.setSize(130, 132);

  67. attackButton.setLocation(1150, 430);

  68. attackButton.addActionListener(new ActionListener() {

  69. @Override

  70. public void actionPerformed(ActionEvent e) {

  71. // 按钮事件

  72. player.attack(redList);

  73. }

  74. });

  75. this.add(attackButton);

  76. player.addButton();

  77.  
  78. while (true) {

  79. mb.createMinion(this, blueList);

  80. mr.createMinion(this, redList);

  81. turret.addTurret(this);

  82. repaint();

  83. try {

  84. Thread.sleep(25);

  85. } catch (Exception e) {

  86. e.printStackTrace();

  87. }

  88. }

  89. }

  90.  
  91. public void paint(Graphics g) {

  92. // System.out.println(player.getX()+" "+player.getY());

  93. if (offScreenImage == null) {

  94. offScreenImage = this.createImage(5984, 4452);

  95. }

  96. Graphics gImage = offScreenImage.getGraphics();

  97. for (int i = 0; i < objList.size(); i++) {

  98. objList.get(i).paintSelf(gImage);

  99. }

  100. // 绘制攻击图片

  101. gImage.drawImage(attack, player.getX() + 500, player.getY() + 100, null);

  102. objList.removeAll(removeList);

  103.  
  104. g.drawImage(offScreenImage, -player.getX() + 700, -player.getY() + 350, null);

  105. /**

  106. * 添加按钮后不能调用键盘事件 因为程序的焦点变成了按钮 this.requestFocus() 把焦点重新改变到游戏界面上

  107. */

  108. this.requestFocus();

  109. }

  110.  
  111. // main方法

  112. public static void main(String[] args) {

  113. GameFrame gameFrame = new GameFrame();

  114. gameFrame.launch();

  115. }

  116.  
  117. // 键盘事件

  118. private class KeyMonitor extends KeyAdapter {

  119. @Override

  120. public void keyPressed(KeyEvent e) {

  121. int key = e.getKeyCode();

  122. player.keyPressed(e);

  123. }

  124.  
  125. @Override

  126. public void keyReleased(KeyEvent e) {

  127. int key = e.getKeyCode();

  128. player.keyReleased(e);

  129. }

  130. }

  131. }

运行结果如下:

 

你可能感兴趣的:(java)