Java GUI刽子手游戏-如何让这些不同的部分一起工作?
我有(几乎)游戏的工作部件,但它们不能一起工作。我是一个完全的初学者,所以我不知道如何找出问题所在。 我有三门课:Java GUI刽子手游戏-如何让这些不同的部分一起工作?,java,swing,class,Java,Swing,Class,我有(几乎)游戏的工作部件,但它们不能一起工作。我是一个完全的初学者,所以我不知道如何找出问题所在。 我有三门课: GameControls包含游戏的主要功能 Hangman设置一个JFrame,调用drawHangman方法并包含main方法 drawHangman有绘制hangman图形的说明 我怀疑这可能不是最好的方法,所以如果这些课程毫无意义,请让我知道(并告诉我为什么!) 问题 GameControls本身运行良好。用户可以选择要猜测的字母,显示正常,如果猜测错误,LivesRep
- GameControls包含游戏的主要功能
- Hangman设置一个JFrame,调用drawHangman方法并包含main方法
- drawHangman有绘制hangman图形的说明
我怀疑这可能不是最好的方法,所以如果这些课程毫无意义,请让我知道(并告诉我为什么!)
但是
如果我使用hangman main方法运行,窗口会出现,控件不再工作
- 在我看来,类/方法的编写/设计方式可能会导致问题(但我不知道如何诊断和修复这个问题。我已经尝试过!)
- 我认为问题1的原因可能是当两个窗口都打开时,程序不知道操作来自何处,和/或我需要添加更多ActionListener内容。
由于我对编程如此陌生,我花了很长时间来研究和尝试不同的东西,我真的很想要一些指针。我的代码如下
是一个整数livesRemaining
- 当您将其放入
语句中时,大小写应该是整数而不是字符switch
而不是case 6:
case '6':
祝你好运。错过了
super.paintComponent
作为public void paintComponent(Graphics comp
)中的第一个代码行,可能dispose()
作为同一代码块中的最后一个代码行(与super.paintComponent
相比真的不重要)UIManager.setLookAndFeel(………
应该是公共静态void main(字符串[]args)中的第一个代码行
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class drawHangman extends JPanel
{
/**
*
*/
private static final long serialVersionUID = -3924721752542320241L;
public void paintComponent (Graphics comp)
{
Graphics2D comp2D = (Graphics2D) comp;
comp2D.setColor(Color.white);
comp2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
Rectangle2D.Float background = new Rectangle2D.Float(0F,0F,400,600/*(float)getSize().width,(float)getSize().height*/);
comp2D.fill(background);
//setting for colour etc
comp2D.setColor(Color.black);
BasicStroke pen = new BasicStroke(2.0f,BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);
comp2D.setStroke(pen);
int livesRemaining = 10;
switch (livesRemaining)
{
case '9':
Line2D.Float gallowsBase = new Line2D.Float(50F,500F,500F,500F);
comp2D.draw(gallowsBase);
break;
case '8':
Line2D.Float gallowsVertical = new Line2D.Float(150F,500F,150F,100F);
comp2D.draw(gallowsVertical);
break;
case '7':
Line2D.Float gallowsTop = new Line2D.Float(150F,100F,400F,100F);
comp2D.draw(gallowsTop);
break;
case '6':
Line2D.Float rope = new Line2D.Float(400F,100F,400F,150F);
comp2D.draw(rope);
break;
case '5':
Ellipse2D.Float head = new Ellipse2D.Float(362F,150F,76F,76F);
comp2D.draw(head);
break;
case '4':
Line2D.Float body = new Line2D.Float(400F,226F,400F,325F);
comp2D.draw(body);
break;
case '3':
Line2D.Float arm1 = new Line2D.Float(400F,226F,300F,275F);
comp2D.draw(arm1);
break;
case '2':
Line2D.Float arm2 = new Line2D.Float(400F,226F,500F,275F);
comp2D.draw(arm2);
break;
case '1':
Line2D.Float leg1 = new Line2D.Float(400F,325F,300F,400F);
comp2D.draw(leg1);
break;
case '0':
Line2D.Float leg2 = new Line2D.Float(400F,325F,500F,400F);
comp2D.draw(leg2);
/*youLosePopup lose = new youLosePopup();*/
}
}
/*public static void main (String[] args)
{
drawHangman draw = new drawHangman();
}*/
}
case 6:
case '6':