myapplet.java

来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 164 行

JAVA
164
字号
     import java.applet.*;
     import java.awt.*;
     import java.awt.event.*;
     import java.awt.geom.*;
     import java.util.*;

     public class MyApplet extends Applet implements Runnable
     {
          public final int BUTTON_1 = 0x10;
          public final int BUTTON_2 = 0x20;

          public final int GAMEPAD_AXIS_X = 1;
          public final int GAMEPAD_AXIS_Y = 2;

          private GamepadTest test;

          private Rectangle box;
          private final int BOX_SIZE = 40;
          private final int DX = 5;
          private final int DY = 5;

          private Random      random;
          private Color       boxColor;
          private Color       bgColor;  

          private Thread      gamepadListener;

          public MyApplet(GamepadTest gpt)
          {
               test = gpt;
          }

          public void init()
          {
               //gamepad_calibrate();

               box      = new Rectangle(100-(BOX_SIZE/2),
                                        100-(BOX_SIZE/2), 
                                        BOX_SIZE, BOX_SIZE);
               random   = new Random();
               boxColor = new Color(random.nextInt());
               bgColor  = new Color(random.nextInt());
          }

          public void start()
          {
               gamepadListener = new Thread(this);
               gamepadListener.start();
          }

          public void stop()
          {
               gamepadListener = null;
          }

          public void run()
          {
               boolean updateEvent;

               Thread t = Thread.currentThread();
               while(gamepadListener == t)
               {
                    updateEvent = false;

                    if(test.gamepadButtonPressed(BUTTON_1) != 0)
                    {
                         boxColor = new Color(random.nextInt());
                         updateEvent = true;
                    } 

                    if(test.gamepad_button_pressed(BUTTON_2) != 0)
                    {
                         bgColor  = new Color(random.nextInt());
                         updateEvent = true;
                    } 
 
                    int x = test.gamepad_axis(GAMEPAD_AXIS_X);
                    if(x < 0)
                    {
                         moveBox(GAMEPAD_AXIS_X, -DX);
                         updateEvent = true;
                    }
                    else if(x > 0)
                    {
                         moveBox(GAMEPAD_AXIS_X, DX);
                         updateEvent = true;
                    }

                    int y = test.gamepad_axis(GAMEPAD_AXIS_Y);
                    if(y < 0)
                    {
                         moveBox(GAMEPAD_AXIS_Y, -DY);
                         updateEvent = true;
                    }
                    else if(y > 0)
                    {
                         moveBox(GAMEPAD_AXIS_Y, DY);
                         updateEvent = true;
                    }

                    if(updateEvent)
                    {
                         repaint();
                    }

                    try
                    {
                         Thread.sleep(10);
                    }
                    catch(InterruptedException e)
                    {
                         break;
                    }   
               }
          }

          public void update(Graphics g)
          {
               paint(g);
          }

          public void paint(Graphics g)
          {
               Graphics2D g2d = (Graphics2D)g;

               g2d.setColor(bgColor);
               g2d.fillRect(0, 0, 200, 200);

               g2d.setColor(boxColor);
               g2d.fill(box);
          }    
     
          private void moveBox(int axis, int amount)
          {
               if(axis == GAMEPAD_AXIS_X)
               {
                    if(amount < 0)
                    {
                         if(box.getX() + amount < 0)
                         {
                              box.setRect(0, box.getY(), BOX_SIZE, BOX_SIZE);
                         }
                         else
                         {
                              box.setRect(box.getX() + amount, box.getY(), BOX_SIZE, BOX_SIZE);
                         }
                    }

                    else if(amount > 0)
                    {
                         if(box.getX() + amount > getSize().getWidth())
                         {
                              box.setRect(getSize().getWidth() - getSize().getWidth(), box.getY(),
                                          BOX_SIZE, BOX_SIZE);
                         }
                         else
                         {
                              box.setRect(box.getX() + amount, box.getY(), BOX_SIZE, BOX_SIZE);
                         }
                    }
               }
          }

     }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?