[Java] 桌面冰球 →→→→→进入此内容的聊天室

来自 , 2021-02-24, 写在 Java, 查看 132 次.
URL http://www.code666.cn/view/29921001
  1. package cn.edu.hnnu;
  2.  
  3. /**
  4.  * 1-->矩形框   挡板
  5.  * 2-->要求我们鼠标能够控制挡板
  6.  * 3-->小球撞上挡板能够反弹
  7.  *
  8.  */
  9. import java.awt.Color;
  10. import java.awt.Font;
  11. import java.awt.Graphics;
  12. import java.awt.Point;
  13. import java.awt.event.KeyEvent;
  14. import java.awt.event.KeyListener;
  15. import java.awt.event.MouseEvent;
  16. import java.awt.event.MouseListener;
  17. import java.awt.event.MouseMotionListener;
  18. import java.awt.image.BufferedImage;
  19. import java.io.IOException;
  20. import java.util.ArrayList;
  21.  
  22. import javax.imageio.ImageIO;
  23. import javax.swing.JPanel;
  24.  
  25. /**
  26.  * 1-->小球与挡板碰撞--banW-5 ---->50 2-->小球与挡板碰撞--speed-1 ----1
  27.  * 3-->小球与挡板碰撞-->修改颜色----随机色
  28.  * 4-->小球与挡板碰撞-->score+1---画出来--->g.drawString("分数"+score)
  29.  * 5-->小球没接住-->gameover-->画出来-->线程停止运行()
  30.  *
  31.  * @author
  32.  *
  33.  */
  34. public class MyBallPanel extends JPanel implements Runnable, MouseListener, KeyListener {
  35.         static BufferedImage background;
  36.         static BufferedImage qiu;
  37.         static BufferedImage ZUOBAN;
  38.         static BufferedImage YOUBAN;
  39.         static BufferedImage kaishi;
  40.         static BufferedImage jieshu1;
  41.         static BufferedImage jieshu2;
  42.         boolean startGame = false;
  43.        
  44.         ArrayList<Rect>rectList=new ArrayList<Rect>();
  45.        
  46.         private void InitRectList()
  47.         {
  48.                 //初始化     矩形rectList
  49.                 rectList.add( zuoban);
  50.                 rectList.add(youban);
  51.                 rectList.add(new Rect(0,0,1200,40));
  52.                 rectList.add(new Rect(0,0,75,250));
  53.                 rectList.add(new Rect(0,550,75,250));
  54.                 rectList.add(new Rect(1120, 0, 75, 250));
  55.                 rectList.add(new Rect(1120, 550, 75, 250));
  56.                 rectList.add(new Rect(0, 760, 1200, 40));
  57.                
  58.         }
  59.         private void hitBall()
  60.         {
  61.                 rectList.remove(zuoban);
  62.                 rectList.remove(youban);
  63.                 zuoban= new Rect(zuobanX,zuobanY,20,200);
  64.                 youban=new Rect(youbanX,youbanY,20,200);
  65.                 rectList.add(zuoban);
  66.                 rectList.add(youban);
  67.        
  68.                 Rect ball = new Rect(ballx,bally,60,60);
  69.                 Rect temp;
  70.                 for(int i = 0;i<rectList.size();i++)
  71.                 {
  72.                         temp =rectList.get(i);
  73.                         if(hit(ball.x,ball.y,ball.width,ball.height,temp.x,temp.y,temp.width,temp.height))
  74.                         {
  75.                
  76.                                 switch(f)
  77.                                 {
  78.                                 case 1:
  79.                                         if(ball.x-3<temp.x+temp.width&&ball.x+3>temp.x+temp.width)
  80.                                                 f = 2;
  81.                                         else
  82.                                                 f = 4;
  83.                                         break;
  84.                                 case 2:
  85.                                         if(ball.x-3<temp.x+temp.width&&ball.x+3>temp.x+temp.width)
  86.                                                 f = 3;
  87.                                         else
  88.                                                 f = 1;
  89.                                         break;
  90.                                 case 3:
  91.                                         if(ball.x-3<temp.x+temp.width&&ball.x+3>temp.x+temp.width)
  92.                                                 f = 4;
  93.                                         else
  94.                                                 f = 2;
  95.                                         break;
  96.                                 case 4:
  97.                                         if(ball.x-3<temp.x+temp.width&&ball.x+3>temp.x+temp.width)
  98.                                                 f = 1;
  99.                                         else
  100.                                                 f = 3;
  101.                                         break;
  102.                                
  103.                                 }
  104.                         }
  105.                 }
  106.         }
  107.         int ballx = 600;
  108.         int bally = 400;
  109.         int f = 1;
  110.         int speed = 6;
  111.         // 声明挡板的变量
  112.        
  113.         int zuobanX = 100;
  114.         int zuobanY = 330;
  115.         int zuobanW = 15;
  116.         int zuobanH = 150;
  117.         int youbanX = 1100;
  118.         int youbanY = 330;
  119.         int youbanW = 15;
  120.         int youbanH = 150;
  121.         int kaishiY = 0;
  122.         int jj1 = 0;
  123.         int jj2 = 0;
  124.      int jjY = -100;
  125.  
  126.         boolean flag = true;
  127.         Color color = null;
  128.         int backY;
  129.        
  130.         Rect zuoban=new Rect(zuobanX,zuobanY,20,200);
  131.         Rect youban=new Rect(youbanX,youbanY,20,200);
  132.        
  133.         private MyBallPanel Unit;
  134.         static {
  135.                 try {
  136.                         background = ImageIO.read(MyBallPanel.class.getResource("BG_1.jpg"));
  137.                         qiu = ImageIO.read(MyBallPanel.class.getResource("qiu.png"));
  138.                         YOUBAN = ImageIO.read(MyBallPanel.class.getResource("11.jpg"));
  139.                         ZUOBAN = ImageIO.read(MyBallPanel.class.getResource("222.jpg"));
  140.                         kaishi = ImageIO.read(MyBallPanel.class.getResource("kaishi.jpg"));
  141.                         jieshu1 = ImageIO.read(MyBallPanel.class.getResource("1p win.png"));
  142.                         jieshu2 = ImageIO.read(MyBallPanel.class.getResource("2p win.png"));
  143.                 } catch (IOException e) {
  144.                         // TODO 自动生成的 catch 块
  145.                         e.printStackTrace();
  146.                 }
  147.  
  148.         }
  149.  
  150.         public MyBallPanel(){
  151.                 this.InitRectList();
  152.                 this.addMouseListener(this);
  153.          }
  154.         public void paint(Graphics g) {
  155.                 super.paint(g);
  156.                 paintBackground(g);
  157.                 paintQiu(g);
  158.                 paintBan(g);
  159.                 paintKaiShi(g);
  160.                 paintJieShu(g);
  161.                 g.setColor(Color.RED);
  162.         paintWeiZhi(g);
  163.                 // 画
  164.                 // 是用数组方式存储,以及判断
  165.                 // 每次运动都需要和每一个砖块进行对比 ,以及砖块四边进行对比
  166.         }
  167.         private void paintWeiZhi(Graphics g) {
  168.                 // TODO 自动生成的方法存根
  169.                 if(flag==true){
  170.                 Font f1 = new Font(Font.SANS_SERIF,Font.BOLD,40);
  171.                 g.setFont(f1);
  172.                 g.setColor(Color.WHITE);
  173.                 g.drawString(" 1P", 80, 80);
  174.                 g.drawString(" 2P",1060, 80);
  175.                 }
  176.         }
  177.         private void paintJieShu(Graphics g) {
  178.                 // TODO 自动生成的方法存根
  179.                 if(flag==false){
  180.                         if(jj1==1)
  181.                         g.drawImage(jieshu1, 0,jjY, 1200, 1000, null);
  182.                         else
  183.                         g.drawImage(jieshu2, 0,jjY, 1200, 1000, null);
  184.         }
  185.  
  186.         }
  187.         private void paintKaiShi(Graphics g) {
  188.                 // TODO 自动生成的方法存根
  189.                 g.drawImage(kaishi, 0,kaishiY, 1200, 800, null);
  190.         }
  191.         public boolean hit(int x1,int y1, int x2, int y2, int w2, int h2)
  192.         {
  193.                 if(x1>=x2&&x1<=x2+w2&&y1>=y2&&y1<=y2+h2)
  194.                 return true;
  195.                 return false;
  196.         }
  197.         public boolean hit(int x1,int y1,int w1,int h1,int x2,int y2,int w2,int h2 )
  198.         {
  199.                 if(x1>=x2&&x1>=x2+w2)
  200.                 {
  201.                         return false;
  202.                 }else if(x1<=x2&&x1+w1<=x2)
  203.                 {
  204.                         return false;
  205.                 }else if(y1>=y2&&y1>=y2+h2)
  206.                 {
  207.                         return false;
  208.                 }else if(y1<=y2&&y1+h1<=y2)
  209.                 {
  210.                         return false;
  211.                 }
  212.                 return true;
  213.         }
  214.         private void paintBan(Graphics g) {
  215.                 // TODO 自动生成的方法存根
  216.     g.drawImage(ZUOBAN, zuobanX, zuobanY,zuobanW,zuobanH,null);
  217.      g.drawImage(YOUBAN, youbanX, youbanY,youbanW,zuobanH,null);         
  218.         }
  219.         private void paintQiu(Graphics g) {
  220.                 // TODO 自动生成的方法存根
  221.                 g.drawImage(qiu, ballx, bally, 60, 60, null);
  222.         }
  223.  
  224.         private void paintBackground(Graphics g) {
  225.                 // TODO 自动生成的方法存根
  226.                 g.drawImage(background, 0, 0, 1200, 800, null);
  227.         }
  228.  
  229.  

回复 "桌面冰球"

这儿你可以回复上面这条便签

captcha