📄 red.java
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseMotionListener;
import java.util.EventListener;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class red extends JFrame implements MouseMotionListener, ActionListener {
redPanel rp=new redPanel();
red(){
//布置窗体
this.setSize(300,400);
Container cn=this.getContentPane();
cn.setLayout(new BorderLayout());
//声成显示面板
cn.add(rp,BorderLayout.CENTER);
//生成按钮面板
JPanel rb=new JPanel();
cn.add(rb,BorderLayout.SOUTH);
rb.setLayout(new FlowLayout());
JButton b1=new JButton("重来");
rb.add(b1);
b1.addActionListener(this);
this.addMouseMotionListener(this);
Thread t = new Thread(rp) ;
t.start() ;
}
public static void main (String args[]){
red r = new red();
r.show();
}
public void mouseDragged(MouseEvent e) {
rp.mx=e.getX();
rp.my=e.getY();
rp.map[rp.mx-5][rp.my-23]=1;
}
public void mouseMoved(MouseEvent e) {
}
public void actionPerformed(ActionEvent e) {
rp.reset();
}
}
class redPanel extends JPanel implements Runnable{
public int map[][]=new int[300][400];
public void reset(){
for(int i=0;i<300;i++){
for (int j=0;j<400;j++){
map[i][j] = 0;
}
}
}
public int mx;
public int my;
WB wb=new WB();
int a =0;
int ran = (int)(Math.random()*4);
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.RED) ;
for(int i=0;i<300;i++){
for (int j=0;j<400;j++){
if( map[i][j]==1)
g.drawLine(i,j,i,j);
// System.out.print("aaaaaaaaaaa");
}
}
if (a%4==ran){
ran = (int)(Math.random()*4);
}
g.setColor(Color.BLUE) ;
g.fillOval(wb.x,wb.y,wb.r,wb.r);
int panduan;
if (ran ==0){//向上走
int pan=0;
for(int i=0;i<10;i++){
pan=pan+map[wb.x+i][wb.y-1];
}
if(pan==0){
wb.pa(ran);
}
}
if (ran==1){//向下走
int pan=0;
for(int i=0;i<10;i++){
pan=pan+map[wb.x+i][wb.y+21];
}
if(pan==0){
wb.pa(ran);
}
}
if (ran==2){//左
int pan=0;
for(int i=0;i<10;i++){
pan=pan+map[wb.x-1][wb.y+i];
}
if(pan==0){
wb.pa(ran);
}
}
if (ran==3){//右
int pan=0;
for(int i=0;i<10;i++){
pan=pan+map[wb.x+21][wb.y+i];
}
if(pan==0){
wb.pa(ran);
}
}
a++;
}
public void run(){
while(true){
try{
Thread.sleep(10) ;
}catch(Exception e){}
this.repaint() ;
}
}
}
class WB {
public int x = 150;
public int y = 200;
public int r = 20;
public void pa (int ran){
if (x>=0&&x<=298&&y>=0&&y<=373){
if (ran ==0 ){//向上走
this.y=this.y-1;
}
if (ran==1){//向下走
this.y=this.y+1;
}
if (ran==2){//左
this.x=this.x-1;
}
if (ran==3){//右
this.x=this.x+1;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -