码迷,mamicode.com
首页 > 其他好文 > 详细

练习.小球撞墙反弹

时间:2015-01-01 17:20:14      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

  1 package com.java7.myball.main;
  2 import java.awt.*;
  3 
  4 public class MyBall {
  5     public static void main(String[] args) {
  6         Frame w = new Frame();
  7         w.setSize(300, 400);
  8         
  9         MyPanel mp = new MyPanel();
 10         w.add(mp);
 11         
 12         Thread t = new Thread(mp);
 13         t.start();
 14         
 15         w.show();
 16     }
 17 }
 18 
 19 class MyPanel extends Panel implements Runnable {
 20     int x1 = 30;
 21     int y1 = 30;
 22     int x2 = 280;
 23     int y2 = 358;
 24     int cr = 0;
 25     int cg = 0;
 26     int cb = 0;
 27     int att1 = 0; // 0=右下;1=左下;2=左上;3=右上
 28     int att2 = 0;
 29     boolean b = true;
 30     public void paint(Graphics g) {
 31         g.setColor(new Color(cr, cg, cb));
 32         g.fillOval(x1, y1, 20, 20);
 33         g.fillOval(x2, y2, 20, 20);
 34     }
 35     public void run() {
 36         while(b) {
 37             // 定义飞行姿态
 38             if(att1 == 0) {
 39                 x1++;
 40                 y1++;
 41             }
 42             if(att1 == 1) {
 43                 x1--;
 44                 y1++;
 45             }
 46             if(att1 == 2) {
 47                 x1--;
 48                 y1--;
 49             }
 50             if(att1 == 3) {
 51                 x1++;
 52                 y1--;
 53             }
 54             if(att2 == 0) {
 55                 x2++;
 56                 y2++;
 57             }
 58             if(att2 == 1) {
 59                 x2--;
 60                 y2++;
 61             }
 62             if(att2 == 2) {
 63                 x2--;
 64                 y2--;
 65             }
 66             if(att2 == 3) {
 67                 x2++;
 68                 y2--;
 69             }
 70             
 71             // 改变飞行姿态
 72             if(x1 > 280) {
 73                 if(att1 == 0) {
 74                     att1 = 1;
 75                     cr = (int)(Math.random() * 255);
 76                     cg = (int)(Math.random() * 255);
 77                     cb = (int)(Math.random() * 255);
 78                 } else {
 79                     att1 = 2;
 80                     cr = (int)(Math.random() * 255);
 81                     cg = (int)(Math.random() * 255);
 82                     cb = (int)(Math.random() * 255);
 83                 }
 84             }
 85             if(y1 > 358) {
 86                 if(att1 == 1) {
 87                     att1 = 2;
 88                     cr = (int)(Math.random() * 255);
 89                     cg = (int)(Math.random() * 255);
 90                     cb = (int)(Math.random() * 255);
 91                 } else {
 92                     att1 = 3;
 93                     cr = (int)(Math.random() * 255);
 94                     cg = (int)(Math.random() * 255);
 95                     cb = (int)(Math.random() * 255);
 96                 }
 97             }
 98             if(x1 < 0) {
 99                 if(att1 == 2) {
100                     att1 = 3;
101                     cr = (int)(Math.random() * 255);
102                     cg = (int)(Math.random() * 255);
103                     cb = (int)(Math.random() * 255);
104                 } else {
105                     att1 = 0;
106                     cr = (int)(Math.random() * 255);
107                     cg = (int)(Math.random() * 255);
108                     cb = (int)(Math.random() * 255);
109                 }
110             }
111             if(y1 < 0) {
112                 if(att1 == 3) {
113                     att1 = 0;
114                     cr = (int)(Math.random() * 255);
115                     cg = (int)(Math.random() * 255);
116                     cb = (int)(Math.random() * 255);
117                 } else {
118                     att1 = 1;
119                     cr = (int)(Math.random() * 255);
120                     cg = (int)(Math.random() * 255);
121                     cb = (int)(Math.random() * 255);
122                 }
123             }            
124             if(x2 > 280) {
125                 if(att2 == 0) {
126                     att2 = 1;
127                     cr = (int)(Math.random() * 255);
128                     cg = (int)(Math.random() * 255);
129                     cb = (int)(Math.random() * 255);
130                 } else {
131                     att2 = 2;
132                     cr = (int)(Math.random() * 255);
133                     cg = (int)(Math.random() * 255);
134                     cb = (int)(Math.random() * 255);
135                 }
136             }
137             if(y2 > 358) {
138                 if(att2 == 1) {
139                     att2 = 2;
140                     cr = (int)(Math.random() * 255);
141                     cg = (int)(Math.random() * 255);
142                     cb = (int)(Math.random() * 255);
143                 } else {
144                     att2 = 3;
145                     cr = (int)(Math.random() * 255);
146                     cg = (int)(Math.random() * 255);
147                     cb = (int)(Math.random() * 255);
148                 }
149             }
150             if(x2 < 0) {
151                 if(att2 == 2) {
152                     att2 = 3;
153                     cr = (int)(Math.random() * 255);
154                     cg = (int)(Math.random() * 255);
155                     cb = (int)(Math.random() * 255);
156                 } else {
157                     att2 = 0;
158                     cr = (int)(Math.random() * 255);
159                     cg = (int)(Math.random() * 255);
160                     cb = (int)(Math.random() * 255);
161                 }
162             }
163             if(y2 < 0) {
164                 if(att2 == 3) {
165                     att2 = 0;
166                     cr = (int)(Math.random() * 255);
167                     cg = (int)(Math.random() * 255);
168                     cb = (int)(Math.random() * 255);
169                 } else {
170                     att2 = 1;
171                     cr = (int)(Math.random() * 255);
172                     cg = (int)(Math.random() * 255);
173                     cb = (int)(Math.random() * 255);
174                 }
175             }
176             // 设置两球相撞后反弹,未完成
177 //            if(x1 <= x2 - 30 && y1 <= y2 - 30) {
178 //                if(att1 == 0) {
179 //                    att1 = 1;
180 //                    cr = (int)(Math.random() * 255);
181 //                    cg = (int)(Math.random() * 255);
182 //                    cb = (int)(Math.random() * 255);
183 //                } else {
184 //                    att1 = 2;
185 //                    cr = (int)(Math.random() * 255);
186 //                    cg = (int)(Math.random() * 255);
187 //                    cb = (int)(Math.random() * 255);
188 //                }
189 //            }
190 //            if(x2 >= x1 + 30 && y2 >= y1 + 30 ) {
191 //                if(att1 == 0) {
192 //                    att1 = 1;
193 //                    cr = (int)(Math.random() * 255);
194 //                    cg = (int)(Math.random() * 255);
195 //                    cb = (int)(Math.random() * 255);
196 //                } else {
197 //                    att1 = 2;
198 //                    cr = (int)(Math.random() * 255);
199 //                    cg = (int)(Math.random() * 255);
200 //                    cb = (int)(Math.random() * 255);
201 //                }
202 //            }
203             try {
204                 Thread.sleep(20);
205             } catch(Exception e) {
206                 
207             }
208             repaint();
209         }
210     }
211 }

 

练习.小球撞墙反弹

标签:

原文地址:http://www.cnblogs.com/fatoland/p/4197320.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!