paintComponent正在强调我; Hangman编程项目

时间:2016-04-25 00:23:46

标签: java object paint paintcomponent

好的,所以我有几个小时的编程项目,我即将完成。我一次只能绘制刽子手的某些部分,这取决于用户不正确的尝试次数。我的编程类的老师要求创建一个不同类的hangman绘图。我遇到的问题是使用paintComponent将不正确的尝试次数发送到一个类。

if(updatedChallenge == challenge)
    {
        incorrectTries += 1;
    }
    challenge = updatedChallenge;

挑战==更新挑战是指用户猜测前隐藏的单词和用户猜测后的隐藏单词。如果它们仍然相等则意味着用户做出了错误的选择。 1会被添加到不正确的尝试总数中。

这是我的另一堂课:

class HangmanPicture extends JPanel
{
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);

        g.setColor(Color.BLACK);
        g.drawLine(250, 300, 300, 300); //Platform

        g.drawLine(275, 300, 275, 200); //Pole

        g.setColor(Color.YELLOW);
        g.drawLine(275, 200, 350, 200); //Rope

        g.drawLine(350, 200, 350, 225); //Noose

        g.setColor(Color.CYAN);
        g.drawOval(350, 225, 15, 15); //Head

        g.drawLine(350, 230, 350, 260); //Torso

        g.drawLine(350, 240, 340, 230); //Left Arm

        g.drawLine(350, 240, 360, 230); // Right Arm

        g.drawLine(350, 260, 330, 280); // Left Leg

        g.drawLine(350, 260, 390, 280); // Right Leg
    }
}

我想在每次不正确的尝试后添加一个if语句,其中每个正文部分都会被添加,这需要我向类中发送不正确的尝试次数。每当我尝试发送数字时,它总是以某种方式干扰paintComponent

非常感谢任何帮助,我绝望了。先谢谢!

1 个答案:

答案 0 :(得分:0)

因为您正在扩展JPanel类。我们可以为类添加额外的方法和字段,并在使用HangmanPicture的地方使用它们。

HangmanPicture panel = new HangmanPicture();
  ...
  if(updatedChallenge == challenge)
  {
      panel.addIncorrectAttempt();
  }
  challenge = updatedChallenge; 

类HangmanPicture扩展了JPanel {     private int incorrectAttempts = 0;

// Add one to counter
public void addIncorrectAttempt(){
  incorrectAttempte++;
}

// Get how many times the player entered an incorrect number
public int getIncorrectAttempts(){
  return incorrectAttempts;
}
public void paintComponent(Graphics g)
{
    super.paintComponent(g);

    g.setColor(Color.BLACK);
    if( incorrectAttempts >= 1 ){
      g.drawLine(250, 300, 300, 300); //Platform
    }

    if( incorrectAttempts >= 2 ){
      g.drawLine(275, 300, 275, 200); //Pole
    }
}

}