Java 有人能帮我用我的按钮游戏代码吗?

Java 有人能帮我用我的按钮游戏代码吗?,java,delay,jgrasp,Java,Delay,Jgrasp,我想我的问题在于我的延迟方法。我的游戏应该先有一个绿色按钮,然后随机变为红色。如果用户按下此红色按钮,他们将失败。我的代码没有检测到红色按钮何时被点击,我想是因为我的延迟方法。但最终它还是检测到了,就在红色按钮多次显示之后。请帮忙!!运行我的代码,看看有什么问题,请告诉我如何修复它!(按钮的图片在标题中是不言自明的,它们应该是什么) import java.awt.*; 导入java.awt.event.*; 导入java.applet.*; 导入java.applet.applet; 导入ja

我想我的问题在于我的延迟方法。我的游戏应该先有一个绿色按钮,然后随机变为红色。如果用户按下此红色按钮,他们将失败。我的代码没有检测到红色按钮何时被点击,我想是因为我的延迟方法。但最终它还是检测到了,就在红色按钮多次显示之后。请帮忙!!运行我的代码,看看有什么问题,请告诉我如何修复它!(按钮的图片在标题中是不言自明的,它们应该是什么)

import java.awt.*;
导入java.awt.event.*;
导入java.applet.*;
导入java.applet.applet;
导入java.awt.image.*;
导入java.util.*;
导入java.net。*;
公共类页面扩展小程序
{
int numClicks;
布尔值是绿色的;
布尔被舔;
布尔单击延迟;
整数计数;
国际兰特;
int按钮代码;
公共void init()
{  
numClicks=0;
buttonCode=0;
计数=0;
单击duringdelay=false;
}   
公共空间涂料(图g)
{  
//屏风
开关(numClicks)
{
案例0:起始页(g);中断;
案例1:说明页(g);中断;
案例2:游戏页面(g);中断;
}
//按钮
如果(numClicks>1)
{
如果(兰特>=80)
绿色=假;
其他的
绿色=真;
图像按钮;
如果(isClicked&&isGreen)
{button=getImage(getDocumentBase(),“greenpressed.png”);//绿色按下
g、 drawImage(按钮,200150,此);}
如果(!isGreen),则为else
{button=getImage(getDocumentBase(),“red.png”);//红色未压缩
g、 drawImage(按钮,200150,本);
单击duringdelay=delay();
如果(单击DuringDelay)
第页(g);
否则{
button=getImage(getDocumentBase(),“green.png”);
g、 drawImage(按钮,200150,本);
rand=(int)(Math.random()*100);
重新绘制();}
}
}
}
公共布尔mouseDown(事件e,int x,int y)
{
如果(!ClickedDuringDelay){

如果(numClicks您在这里做了一些错误的事情

首先,您不应该从EDT调用
Thread.sleep()
。这将导致您描述的行为:您的UI将变得滞后且无响应。您可以通过谷歌“Java EDT”获取更多信息,但这是一个合理的起点

您可能希望使用Swing计时器,而不是(mis)使用
Thread.sleep()
来检测延迟。有关详细信息,请参阅

其次,您不应该从EDT加载图像,而是在开始时加载一次


除此之外:使用JPanel(Swing而不是AWT)可能会更好,你真的应该修正你的格式,因为你的代码很难读懂!

那么我会在我的延迟方法中使用swing定时器吗?对于代码的可读性很抱歉,这是我第一年在AP CS中编码,但我正在尽我最大的努力!@JillyPenfield别担心,我们都是从不可读的代码开始的。我只是提到它,因为它会有所帮助您可以在继续调试的过程中进行调试。至于在何处使用Swing计时器,这取决于具体情况。您希望计时器何时启动?何时结束?结束时希望发生什么?我希望我的Swing计时器在按钮变红后启动(这在paint方法中的else if语句中)。我希望按钮保持红色约5秒。计时器结束时,我需要按钮返回绿色。但是,如果在摆动计时器期间(按钮为红色5秒),如果用户单击,我需要显示Image pressed.png,然后显示丢失屏幕
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.applet.Applet;
import java.awt.image.*;
import java.util.*;
import java.net.*;

public class pages extends Applet
{
  int numClicks;
  boolean isGreen;
  boolean isClicked;
  boolean ClickedDuringDelay;
  int count;
  int rand;
  int buttonCode;        
  public void init()
  {  
     numClicks = 0; 
     buttonCode = 0;
     count = 0;
     ClickedDuringDelay = false;


  }   

  public void paint(Graphics g)
  {  

           //screens
           switch(numClicks)
           {
                 case 0: StartPage(g); break;
                 case 1: InstrucPage(g); break;
                 case 2: GamePage(g); break;
           }

           //pushing buttons
           if(numClicks >1)
           {
                 if(rand >= 80)
                    isGreen = false;
                 else
                    isGreen = true;

                 Image button;
                      if (isClicked && isGreen)                                      
                          {button = getImage(getDocumentBase(), "greenpressed.png"); //green pressed
                       g.drawImage(button,200,150,this);}
                    else if(!isGreen)
                       {button = getImage(getDocumentBase(), "red.png");          //red unpressed
                       g.drawImage(button,200,150,this);

                       ClickedDuringDelay = delay();
                       if(ClickedDuringDelay)
                          LosePage(g);
                       else{
                          button = getImage(getDocumentBase(), "green.png");
                          g.drawImage(button,200,150,this);
                          rand = (int)(Math.random() * 100);
                          repaint(); }
                       }
            }




  }

  public boolean mouseDown(Event e, int x, int y)
   {

     if(!ClickedDuringDelay){
        if(numClicks <2)
           {numClicks++; count--;}
          isClicked = true;
          repaint();
        count++;}

       return true;

   }

   public boolean mouseUp(Event e, int x, int y)
   {
     rand = (int)(Math.random() * 100);
     //System.out.println(rand);

     if(!ClickedDuringDelay){
          isClicked = false;
        repaint();}
       return true;
   }

  public void StartPage(Graphics g)
  {     //background
        g.setColor(Color.black);
        g.fillRect(0,0,800,600);

        //Title
        g.setColor(Color.white);
        g.setFont(new Font("Desdemona",Font.BOLD,100));
        g.drawString("DO NOT PRESS THE",20,100);

        g.setColor(Color.red);
        g.setFont(new Font("Braggadocio",Font.BOLD,100));
        g.drawString("RED",250,250);
        g.drawString("BUTTON",120,350);

        g.setColor(Color.white);
        //g.drawRect(200,400,400,100);
        g.setFont(new Font("American Typewriter",Font.PLAIN,50));
        g.drawString("Click anywhere to continue..",60,490);
  }

  public void InstrucPage(Graphics g)
  {
        //background
        g.setColor(Color.black);
        g.fillRect(0,0,800,600);

        //title
        g.setColor(Color.white);
        g.setFont(new Font("Desdemona",Font.BOLD,100));
        g.drawString("Instructions",100,100);

        g.setColor(Color.red);

        g.setFont(new Font("American Typewriter",Font.PLAIN,40));
        g.drawString("A green button will first appear.",70,200);
        g.drawString("You MAY click this button.",130,250);
        g.drawString("A red button will randomly appear.",70,300);
        g.drawString("Do NOT press this button.",130,350);

        g.setColor(Color.white);
        g.setFont(new Font("American Typewriter",Font.PLAIN,50));
        g.drawString("Click anywhere to start!", 95, 520);
  }

  public void GamePage(Graphics g)
  {
        //background
        g.setColor(Color.black);
        g.fillRect(0,0,800,600);

        //score
        g.setColor(Color.white);
        g.setFont(new Font("Arial",Font.BOLD,100));
        g.drawString("SCORE: " + count,150,100);

        //button

        Image buttons = getImage(getDocumentBase(), "green.png");
        g.drawImage(buttons,200,150,this);



   }


  public void LosePage(Graphics g)
  {
        //background
        g.setColor(Color.black);
        g.fillRect(0,0,800,600);

        g.setColor(Color.red);
        g.setFont(new Font("Desdemona",Font.BOLD,250));
        g.drawString("YOU",200,220);
        g.drawString("LOST",150,470); 

        g.setColor(Color.white);
        g.setFont(new Font("American Typewriter",Font.PLAIN,50));
        g.drawString("Your final score was " + count, 140, 540);

  }

  public boolean delay() 
  {
     boolean delayClick = false;

     for (int i = 0; i<200;i++) 
     {
        try 
        {
           Thread.sleep(5);
           if (isClicked)
             {delayClick = true;
             System.out.println("pressed");}

        }
        catch(InterruptedException ex) 
        {
           Thread.currentThread().interrupt();
        }

     }
     return delayClick;


  }