Server

    1. import javax.swing.*;
    2. import java.awt.*;
    3. import java.awt.event.KeyEvent;
    4. import java.awt.event.KeyListener;
    5. import java.io.ByteArrayOutputStream;
    6. import java.io.ObjectOutputStream;
    7. import java.net.DatagramPacket;
    8. import java.net.DatagramSocket;
    9. import java.net.InetAddress;
    10. import java.util.ArrayList;
    11. import java.util.List;
    12. /*
    13. *
    14. * 执行类
    15. *
    16. *
    17. * */
    18. //窗口包
    19. public class MyFrameC extends JFrame implements KeyListener, Runnable {
    20. //给游戏背景添加上图片
    21. //用于存储所有的背景、
    22. private List<Background> allBg = new ArrayList<>();
    23. //用于存储当前背景
    24. private Background nowBg = new Background();
    25. //用于双缓存
    26. //把要显示的东西全部绘制在一张'图片'上(内存开辟),然后再把这张'图片'一次性显示到屏幕上~
    27. private Image offScreenImage = null;
    28. //马力对象
    29. public static Mario mario = new Mario();
    30. public static Mario mario2 = new Mario();
    31. //定义一个全局变量x,y
    32. public static int x, y;
    33. //接收数据
    34. DatagramSocket ds;
    35. //发送数据
    36. DatagramPacket dp;
    37. //坐标类
    38. public static MarioXY marioXY = new MarioXY(50,330);
    39. private int a;
    40. private int state;
    41. //定义一个线程对象,用于实现马力的运动
    42. private Thread thread = new Thread(this);
    43. static String str;
    44. static Integer i;
    45. //空参构造方法
    46. //在创建对象的时候就把窗口创建出来
    47. public MyFrameC() {
    48. //给MarioXY赋值
    49. marioXY = new MarioXY(20, 330);
    50. //设置窗口大小为800 * 600
    51. this.setSize(1000, 600);
    52. //设置窗口居中显示
    53. this.setLocationRelativeTo(null);
    54. //设置窗口的可见性
    55. this.setVisible(true);
    56. //设置点击窗口上的关闭键,结束程序
    57. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    58. //设置窗口大小不可变
    59. this.setResizable(false);
    60. //向窗口对象添加键盘监听器 这里我们需要继承一个接口KeyListener
    61. this.addKeyListener(this);
    62. //设置窗口名称
    63. this.setTitle("超级马力");
    64. //调用静态初始化方法 初始化图片
    65. StaticValue.init();
    66. //初始化马力对象
    67. mario = new Mario(marioXY.getX(), marioXY.getY(), marioXY);
    68. //创建全部的场景 使用for循环
    69. for (int i = 1; i <= 3; i++) {
    70. //判断是否是第三关 传入i值
    71. allBg.add(new Background(i, i == 3 ? true : false));
    72. }
    73. //设置第一个场景
    74. nowBg = allBg.get(0);
    75. //将第一个场景传给马力对象
    76. mario.setBackground(nowBg);
    77. //接收对象
    78. /* new Thread(() -> {
    79. try {
    80. ds = new DatagramSocket(8888);
    81. byte[] bytes = new byte[1024];
    82. while (true) {
    83. dp = new DatagramPacket(bytes, bytes.length);
    84. ds.receive(dp);
    85. //反序列化
    86. ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    87. ObjectInputStream oi = new ObjectInputStream(bais);
    88. marioXY = (MarioXY) oi.readObject();
    89. }
    90. } catch (Exception e) {
    91. e.printStackTrace();
    92. }
    93. }).start();*/
    94. //发送对象
    95. thread.start();
    96. repaint();
    97. }
    98. //重写paint方法
    99. public void paint(Graphics g) {
    100. //首先判断这个双缓冲是否为null
    101. if (offScreenImage == null) {
    102. //如果是的话我们为他赋值
    103. offScreenImage = createImage(1000, 600);
    104. }
    105. Graphics graphics = offScreenImage.getGraphics();//绘制
    106. graphics.fillRect(0, 0, 1000, 600);//对图像进行填充
    107. //判断游戏模式
    108. graphics.setColor(Color.BLUE);
    109. graphics.drawString("开始游戏", 500, 300);
    110. graphics.setFont(new Font("仿体", Font.BOLD, 100));
    111. if (state == 1) {
    112. //绘制背景 执行到这的时候nowBg里面已经存入了图片了
    113. graphics.drawImage(nowBg.getBgImage(), 0, 0, this);
    114. //绘制的障碍物
    115. for (Obstacle ob : nowBg.getObstacleList()) {
    116. graphics.drawImage(ob.getShow(), ob.getX(), ob.getY(), this);
    117. }
    118. //绘制城堡
    119. graphics.drawImage(nowBg.getTower(), 620, 270, this);
    120. //绘制旗杆
    121. graphics.drawImage(nowBg.getGan(), 500, 220, this);
    122. //绘制马力
    123. graphics.drawImage(mario.getShow(), mario.getX(), mario.getY(), this);
    124. //上面的步骤是将图片已经绘制到缓冲区上了
    125. //绘制敌人
    126. for (Enemy enemy : nowBg.getEnemyList()) {
    127. graphics.drawImage(enemy.getShow(), enemy.getX(), enemy.getY(), this);
    128. }
    129. }
    130. g.drawImage(offScreenImage, 0, 0, this);
    131. }
    132. // 下面我们将图片绘制到窗口中
    133. @Override
    134. public void keyTyped(KeyEvent e) {
    135. }
    136. //当键盘按下按键时调用
    137. //这个方法是 当键盘按下某个按键时调用
    138. @Override
    139. public void keyPressed(KeyEvent e) {
    140. //向右移动
    141. if (e.getKeyCode() == 68) {
    142. mario.rightMove();
    143. try {
    144. ds = new DatagramSocket();
    145. //序列化对象 把对象序列化
    146. ByteArrayOutputStream bao = new ByteArrayOutputStream();
    147. ObjectOutputStream oos = new ObjectOutputStream(bao);
    148. oos.writeObject(marioXY);
    149. oos.flush();
    150. byte[] sendBuff = bao.toByteArray();
    151. dp = new DatagramPacket(sendBuff, sendBuff.length,
    152. InetAddress.getLocalHost(), 8787);
    153. ds.send(dp);
    154. } catch (Exception e1) {
    155. e1.printStackTrace();
    156. }
    157. }
    158. //向左移动
    159. if (e.getKeyCode() == 65) {
    160. mario.leftMove();
    161. }
    162. //跳跃
    163. if (e.getKeyCode() == 87) {
    164. mario.jump();
    165. }
    166. int key = e.getKeyCode();
    167. switch (key) {
    168. case KeyEvent.VK_ENTER:
    169. state = 1;
    170. break;
    171. }
    172. }
    173. //当键盘按下按键时调用
    174. //这个方法是 当键盘松开某个按键时调用
    175. @Override
    176. public void keyReleased(KeyEvent e) {
    177. //向左停止
    178. if (e.getKeyCode() == 65) {
    179. mario.leftStop();
    180. }
    181. //向右停止
    182. if (e.getKeyCode() == 68) {
    183. mario.rightStop();
    184. }
    185. }
    186. @Override
    187. public void run() {
    188. while (true) {
    189. //重新绘制图像
    190. repaint();
    191. try {
    192. //线程休眠
    193. Thread.sleep(50);
    194. //判断马力是否已经走到了最右边
    195. if (mario.getX() >= 980) {
    196. nowBg = allBg.get(nowBg.getSort());
    197. mario.setBackground(nowBg);
    198. mario.setX(10);
    199. mario.setY(370);
    200. }
    201. if (mario.getX() <= 0) {
    202. nowBg = allBg.get(nowBg.getSort() - 2);
    203. mario.setBackground(nowBg);
    204. mario.setX(980);
    205. mario.setY(370);
    206. }
    207. } catch (Exception e) {
    208. e.printStackTrace();
    209. }
    210. }
    211. }
    212. public static void main(String[] args) {
    213. MyFrameC m = new MyFrameC();
    214. }
    215. }

    Client

    1. import javax.swing.*;
    2. import java.awt.*;
    3. import java.awt.event.KeyEvent;
    4. import java.awt.event.KeyListener;
    5. import java.io.ByteArrayOutputStream;
    6. import java.io.ObjectOutputStream;
    7. import java.net.DatagramPacket;
    8. import java.net.DatagramSocket;
    9. import java.net.InetAddress;
    10. import java.util.ArrayList;
    11. import java.util.List;
    12. /*
    13. *
    14. * 执行类
    15. *
    16. *
    17. * */
    18. //窗口包
    19. public class MyFrameC extends JFrame implements KeyListener, Runnable {
    20. //给游戏背景添加上图片
    21. //用于存储所有的背景、
    22. private List<Background> allBg = new ArrayList<>();
    23. //用于存储当前背景
    24. private Background nowBg = new Background();
    25. //用于双缓存
    26. //把要显示的东西全部绘制在一张'图片'上(内存开辟),然后再把这张'图片'一次性显示到屏幕上~
    27. private Image offScreenImage = null;
    28. //马力对象
    29. public static Mario mario = new Mario();
    30. public static Mario mario2 = new Mario();
    31. //定义一个全局变量x,y
    32. public static int x, y;
    33. //接收数据
    34. DatagramSocket ds;
    35. //发送数据
    36. DatagramPacket dp;
    37. //坐标类
    38. public static MarioXY marioXY = new MarioXY(50,330);
    39. private int a;
    40. private int state;
    41. //定义一个线程对象,用于实现马力的运动
    42. private Thread thread = new Thread(this);
    43. static String str;
    44. static Integer i;
    45. //空参构造方法
    46. //在创建对象的时候就把窗口创建出来
    47. public MyFrameC() {
    48. //给MarioXY赋值
    49. marioXY = new MarioXY(20, 330);
    50. //设置窗口大小为800 * 600
    51. this.setSize(1000, 600);
    52. //设置窗口居中显示
    53. this.setLocationRelativeTo(null);
    54. //设置窗口的可见性
    55. this.setVisible(true);
    56. //设置点击窗口上的关闭键,结束程序
    57. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    58. //设置窗口大小不可变
    59. this.setResizable(false);
    60. //向窗口对象添加键盘监听器 这里我们需要继承一个接口KeyListener
    61. this.addKeyListener(this);
    62. //设置窗口名称
    63. this.setTitle("超级马力");
    64. //调用静态初始化方法 初始化图片
    65. StaticValue.init();
    66. //初始化马力对象
    67. mario = new Mario(marioXY.getX(), marioXY.getY(), marioXY);
    68. //创建全部的场景 使用for循环
    69. for (int i = 1; i <= 3; i++) {
    70. //判断是否是第三关 传入i值
    71. allBg.add(new Background(i, i == 3 ? true : false));
    72. }
    73. //设置第一个场景
    74. nowBg = allBg.get(0);
    75. //将第一个场景传给马力对象
    76. mario.setBackground(nowBg);
    77. //接收对象
    78. /* new Thread(() -> {
    79. try {
    80. ds = new DatagramSocket(8888);
    81. byte[] bytes = new byte[1024];
    82. while (true) {
    83. dp = new DatagramPacket(bytes, bytes.length);
    84. ds.receive(dp);
    85. //反序列化
    86. ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    87. ObjectInputStream oi = new ObjectInputStream(bais);
    88. marioXY = (MarioXY) oi.readObject();
    89. }
    90. } catch (Exception e) {
    91. e.printStackTrace();
    92. }
    93. }).start();*/
    94. //发送对象
    95. thread.start();
    96. repaint();
    97. }
    98. //重写paint方法
    99. public void paint(Graphics g) {
    100. //首先判断这个双缓冲是否为null
    101. if (offScreenImage == null) {
    102. //如果是的话我们为他赋值
    103. offScreenImage = createImage(1000, 600);
    104. }
    105. Graphics graphics = offScreenImage.getGraphics();//绘制
    106. graphics.fillRect(0, 0, 1000, 600);//对图像进行填充
    107. //判断游戏模式
    108. graphics.setColor(Color.BLUE);
    109. graphics.drawString("开始游戏", 500, 300);
    110. graphics.setFont(new Font("仿体", Font.BOLD, 100));
    111. if (state == 1) {
    112. //绘制背景 执行到这的时候nowBg里面已经存入了图片了
    113. graphics.drawImage(nowBg.getBgImage(), 0, 0, this);
    114. //绘制的障碍物
    115. for (Obstacle ob : nowBg.getObstacleList()) {
    116. graphics.drawImage(ob.getShow(), ob.getX(), ob.getY(), this);
    117. }
    118. //绘制城堡
    119. graphics.drawImage(nowBg.getTower(), 620, 270, this);
    120. //绘制旗杆
    121. graphics.drawImage(nowBg.getGan(), 500, 220, this);
    122. //绘制马力
    123. graphics.drawImage(mario.getShow(), mario.getX(), mario.getY(), this);
    124. //上面的步骤是将图片已经绘制到缓冲区上了
    125. //绘制敌人
    126. for (Enemy enemy : nowBg.getEnemyList()) {
    127. graphics.drawImage(enemy.getShow(), enemy.getX(), enemy.getY(), this);
    128. }
    129. }
    130. g.drawImage(offScreenImage, 0, 0, this);
    131. }
    132. // 下面我们将图片绘制到窗口中
    133. @Override
    134. public void keyTyped(KeyEvent e) {
    135. }
    136. //当键盘按下按键时调用
    137. //这个方法是 当键盘按下某个按键时调用
    138. @Override
    139. public void keyPressed(KeyEvent e) {
    140. //向右移动
    141. if (e.getKeyCode() == 68) {
    142. mario.rightMove();
    143. try {
    144. ds = new DatagramSocket();
    145. //序列化对象 把对象序列化
    146. ByteArrayOutputStream bao = new ByteArrayOutputStream();
    147. ObjectOutputStream oos = new ObjectOutputStream(bao);
    148. oos.writeObject(marioXY);
    149. oos.flush();
    150. byte[] sendBuff = bao.toByteArray();
    151. dp = new DatagramPacket(sendBuff, sendBuff.length,
    152. InetAddress.getLocalHost(), 8787);
    153. ds.send(dp);
    154. } catch (Exception e1) {
    155. e1.printStackTrace();
    156. }
    157. }
    158. //向左移动
    159. if (e.getKeyCode() == 65) {
    160. mario.leftMove();
    161. }
    162. //跳跃
    163. if (e.getKeyCode() == 87) {
    164. mario.jump();
    165. }
    166. int key = e.getKeyCode();
    167. switch (key) {
    168. case KeyEvent.VK_ENTER:
    169. state = 1;
    170. break;
    171. }
    172. }
    173. //当键盘按下按键时调用
    174. //这个方法是 当键盘松开某个按键时调用
    175. @Override
    176. public void keyReleased(KeyEvent e) {
    177. //向左停止
    178. if (e.getKeyCode() == 65) {
    179. mario.leftStop();
    180. }
    181. //向右停止
    182. if (e.getKeyCode() == 68) {
    183. mario.rightStop();
    184. }
    185. }
    186. @Override
    187. public void run() {
    188. while (true) {
    189. //重新绘制图像
    190. repaint();
    191. try {
    192. //线程休眠
    193. Thread.sleep(50);
    194. //判断马力是否已经走到了最右边
    195. if (mario.getX() >= 980) {
    196. nowBg = allBg.get(nowBg.getSort());
    197. mario.setBackground(nowBg);
    198. mario.setX(10);
    199. mario.setY(370);
    200. }
    201. if (mario.getX() <= 0) {
    202. nowBg = allBg.get(nowBg.getSort() - 2);
    203. mario.setBackground(nowBg);
    204. mario.setX(980);
    205. mario.setY(370);
    206. }
    207. } catch (Exception e) {
    208. e.printStackTrace();
    209. }
    210. }
    211. }
    212. public static void main(String[] args) {
    213. MyFrameC m = new MyFrameC();
    214. }
    215. }

    坐标系类

    1. import java.io.Serializable;
    2. public class MarioXY implements Serializable {
    3. private int x;
    4. private int y;
    5. public MarioXY(){
    6. }
    7. public MarioXY(int x, int y ){
    8. this.x = x;
    9. this.y = y;
    10. }
    11. public int getX() {
    12. return x;
    13. }
    14. public void setX(int x) {
    15. this.x = x;
    16. }
    17. public int getY() {
    18. return y;
    19. }
    20. public void setY(int y) {
    21. this.y = y;
    22. }
    23. }

    Mario类

    1. import java.awt.image.BufferedImage;
    2. /*
    3. *
    4. * 实现Runnable接口 线程
    5. * 马力类
    6. *
    7. * */
    8. public class Mario implements Runnable {
    9. //用于表示横纵坐标
    10. private int x;
    11. private int y;
    12. private MarioXY xy;
    13. //用于表示当前的状态
    14. private String status;
    15. //用于显示当前状态对应的图像
    16. private BufferedImage show = null;
    17. //定义一个Background对象,用来获取障碍物的信息
    18. private Background background = new Background();
    19. //用来实现马力的动作
    20. private Thread thread = null;
    21. //马力的移动速度
    22. private int xSpeed;
    23. //马力的跳跃速度
    24. private int ySpeed;
    25. //定义一个索引,这个变量用于取得马力的运动图像
    26. private int index;
    27. //定义一个int变量 表示马力上升的时间 超过一定时间都不能上升了
    28. private int upTime = 0;
    29. //马力死亡
    30. private boolean isDeath = false;
    31. //坐标
    32. MarioXY marioXY;
    33. //用来实现马力奥的动作
    34. public Mario() {
    35. }
    36. public Mario(int x, int y,MarioXY marioXY) {
    37. //用于表示马力的位置
    38. this.x = marioXY.getX();
    39. this.y = marioXY.getY();
    40. this.marioXY = marioXY;
    41. //用于表示马力的初始站立样子
    42. show = StaticValue.stand_R;
    43. //用于马力当前状态
    44. this.status = "stand--right";
    45. //初始化线程
    46. thread = new Thread(this);
    47. thread.start();
    48. }
    49. //马力死亡的方法
    50. public void death(){
    51. isDeath = true;
    52. }
    53. //马力向左移动
    54. public void leftMove() {
    55. //改变移动速度
    56. xSpeed = -10;
    57. //判断马力是否处于空中,由于处于空中无法移动
    58. //indexOf传入一个值 返回他出现的第一个索引位置
    59. if (status.indexOf("jump") != -1) {
    60. status = "jump--left";
    61. } else {
    62. status = "move--left";
    63. }
    64. }
    65. //马力向右移动
    66. public void rightMove() {
    67. //速度
    68. xSpeed = 10;
    69. if (status.indexOf("jump") != -1) {
    70. status = "jump--right";
    71. } else {
    72. status = "move--right";
    73. }
    74. }
    75. //马力向左停止
    76. public void leftStop() {
    77. xSpeed = 0;
    78. if (status.indexOf("jump") != -1) {
    79. status = "jump--left";
    80. } else {
    81. status = "stop--left";
    82. }
    83. }
    84. //马力向右停止
    85. public void rightStop() {
    86. xSpeed = 0;
    87. if (status.indexOf("jump") != -1) {
    88. status = "jump--right";
    89. } else {
    90. status = "stop--right";
    91. }
    92. }
    93. /*垃圾方法
    94. //马力向上跳跃
    95. public void jump_up() {
    96. ySpeed = 10;
    97. if (status.indexOf("jump" ) != -1) {
    98. status = "stop-right";
    99. }else {
    100. status = "jump--up";
    101. }
    102. }
    103. //马力向右上跳停止
    104. public void jump_stop(){
    105. ySpeed = -10;
    106. if (status.indexOf("jump") != -1){
    107. status = "right--stop";
    108. }else { 垃圾方法
    109. status = "jump--stop";
    110. }
    111. }*/
    112. //马力攻击
    113. public void gongji() {
    114. }
    115. //马力跳跃
    116. public void jump() {
    117. //判断是否是跳跃状态 如果是-1的话就是 此时马力是跳跃状态
    118. if (status.indexOf("jump") == -1) {
    119. //判断马力的方向是那边 如果不等于-1的话 此时马力的方向是左
    120. if (status.indexOf("left") != -1) {
    121. status = "jump--left";
    122. } else {
    123. status = "jump--right";
    124. }
    125. ySpeed = -10;
    126. //跳跃的像素高度
    127. upTime = 10;
    128. }
    129. }
    130. //马力下落
    131. public void fall() {
    132. if (status.indexOf("left") != -1) {
    133. status = "jump--left";
    134. } else {
    135. status = "jump--right";
    136. }
    137. ySpeed = 10;
    138. }
    139. @Override
    140. public void run() {
    141. while (true) {
    142. //判断是否处于障碍物上
    143. boolean onObstacle = false;
    144. //判断是否可以往右走
    145. boolean canRight = true;
    146. //判断是否可以往左走
    147. boolean canLeft = true;
    148. //判断马力是否到达旗杆的位置
    149. //遍历当前场景里所有的障碍物
    150. for (int i = 0; i < background.getObstacleList().size(); i++) {
    151. Obstacle ob = background.getObstacleList().get(i);
    152. //判断马力是否站立于障碍物之上
    153. if (ob.getY() == this.y + 30 && (ob.getX() > this.x - 30 && ob.getX() < this.x + 30)) {
    154. onObstacle = true;
    155. }
    156. //判断马力是否跳起来顶到方块
    157. if (ob.getY() >= this.y - 30 && (ob.getY() <= this.y - 20) && (ob.getX() > this.x - 30) && ob.getX() < this.x + 30) {
    158. if (ob.getType() == 0) {
    159. //删除可破坏的砖块
    160. background.getObstacleList().remove(ob);
    161. }
    162. //当顶到砖块的时候 upTime就为0就会直接下落了
    163. upTime = 0;
    164. }
    165. //判断马力是否可以往右走 如果符合这个条件说明马力的右边有障碍物
    166. //更改了一下
    167. if (ob.getX() == this.x + 30 && (ob.getY() > this.y - 30 && ob.getY() < this.y + 30)) {
    168. canRight = false;
    169. }
    170. //判断是否可以往左边走 如果符合条件就说明马力的左边有障碍物
    171. if (ob.getX() == this.x - 30 && (ob.getY() > this.y - 30 && ob.getY() < this.y + 30)) {
    172. canLeft = false;
    173. }
    174. }
    175. //判断马力是否碰到敌人死亡或踩死蘑菇敌人
    176. for (int i = 0; i < background.getEnemyList().size(); i++) {
    177. Enemy e = background.getEnemyList().get(i);
    178. if (e.getY() == this.y + 20 && (e.getX() - 25 <= this.x && e.getX() + 35 >= this.x)) {
    179. if (e.getType() == 1) {
    180. e.death();
    181. upTime = 3;
    182. ySpeed -= 10;
    183. }
    184. }
    185. if (e.getX() + 35 > this.x && e.getX() - 25 < this.x && (e.getY() + 35 > this.y && e.getY() - 20 < this.y)) {
    186. //马力死亡
    187. death();
    188. }
    189. }
    190. //进行马力跳跃的操作
    191. //判断马力是否在障碍物之上并且upTime=0
    192. if (onObstacle && upTime == 0) {
    193. //判断马力面向的方向是那边 如果是左边就等于-1 否则是右边
    194. if (status.indexOf("left") != -1) {
    195. //马力是否是移动中
    196. if (xSpeed != 0) {
    197. //如果xSpeed不等于0就是处于移动状态 向左
    198. status = "move--left";
    199. } else {
    200. //如果xSpeed等于0 就是停止状态 向左
    201. status = "stop-left";
    202. }
    203. } else {
    204. //马力是否是移动中
    205. if (xSpeed != 0) {
    206. //如果xSpeed不等于0就是处于移动状态 向右
    207. status = "move--right";
    208. } else {
    209. //如果xSpeed等于0 就是停止状态 向右
    210. status = "stop--right";
    211. }
    212. }
    213. } else {
    214. //处于上升状态
    215. if (upTime != 0) {
    216. //自减 当upTime==0的时候就证明他已经上升到了最高点
    217. upTime--;
    218. } else {
    219. //调用fall()方法让他下落
    220. fall();
    221. }
    222. //这里进行了加 Y轴的
    223. y += ySpeed;
    224. System.out.println();
    225. }
    226. if ((canLeft && xSpeed < 0) || (canRight && xSpeed > 0)) {
    227. x += xSpeed;
    228. //判断马力是否到了屏幕的最左边,就无法再运动了
    229. if (x < 0) {
    230. x = 0;
    231. }
    232. }
    233. //判断当前是否是移动状态
    234. if (status.contains("move")) {
    235. //改变图片的索引
    236. index = index == 0 ? 1 : 0;
    237. }
    238. //判断是否向左移动
    239. if ("move--left".equals(status)) {
    240. show = StaticValue.run_L.get(index);
    241. }
    242. //判断是否向右移动
    243. if ("move--right".equals(status)) {
    244. show = StaticValue.run_R.get(index);
    245. }
    246. //判断是否向左停止
    247. if ("stop--left".equals(status)) {
    248. show = StaticValue.stand_L;
    249. }
    250. //判断是否向左停止
    251. if ("stop--right".equals(status)) {
    252. show = StaticValue.stand_R;
    253. }
    254. //判断是否向左跳跃
    255. if ("jump--left".equals(status)) {
    256. show = StaticValue.jump_L;
    257. }
    258. //判断是否向右跳跃
    259. if ("jump--right".equals(status)) {
    260. show = StaticValue.jump_R;
    261. }
    262. try {
    263. Thread.sleep(50);
    264. } catch (InterruptedException e) {
    265. e.printStackTrace();
    266. }
    267. //实时给坐标类信息
    268. marioXY.setX(this.x);
    269. marioXY.setY(this.y);
    270. }
    271. }
    272. public int getX() {
    273. return x;
    274. }
    275. public int getY() {
    276. return y;
    277. }
    278. public BufferedImage getShow() {
    279. return show;
    280. }
    281. public void setX(int x) {
    282. this.x = x;
    283. }
    284. public void setY(int Y) {
    285. this.y = Y;
    286. }
    287. public void setShow(BufferedImage show) {
    288. this.show = show;
    289. }
    290. public void setBackground(Background background) {
    291. this.background = background;
    292. }
    293. public MarioXY getXy() {
    294. return xy;
    295. }
    296. public void setXy(MarioXY xy) {
    297. this.xy = xy;
    298. }
    299. }