• 大小: 8KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: Java
  • 标签: 游戏  刽子手  

资源简介

gui学习成果,通过猜单词来决定任务的生存。有七次猜单词中的字母的机会,如果七次以内猜出单词中所有字母,则胜利。反之,任务左右摇摆而死去。

资源截图

代码片段和文件信息

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class KillerGame extends Jframe {
  private ManPanel canvas = new ManPanel();

  public KillerGame() {
    this.add(canvas BorderLayout.CENTER); //将人物放入界面
  }

  public static void main(String[] args) {
    Jframe frame = new KillerGame();
    frame.settitle(“KillerGame“);
    frame.setLocationRelativeTo(null); // Center the frame
    frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
    frame.setSize(450 280);
    frame.setVisible(true);
  }

  class ManPanel extends JPanel {
    int ballRadius = 10;
    int leftAngle = 120;
    int rightAngle = 60;
    int angle = 90; // 从中间开始摆动
    int angleDelta = 1; // 摆动角度的速度
    int delay = 100;

    Timer timer = new Timer(delay new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        repaint();
      }
    });

    ManPanel() {
      setNewHiddenWord();
      
      this.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
          char letter = e.getKeyChar();
          if (letter == KeyEvent.VK_ENTER) {
            // 新游戏开始
            setNewHiddenWord();
          } else if (Character.isLowerCase(letter)) {
            processAGuessedLetter(letter);

            if (numberOfMisses == 7)
              timer.start();
            else
              timer.stop();
          }

          repaint();
        }
      });

      setFocusable(true);
    }

    protected void paintComponent(Graphics g) {
      super.paintComponent(g);

      g.setFont(new Font(“TimesRoman“ Font.BOLD 20));
      
      if (isFinished) {
        //显示所猜的单词
        g.drawString(“The word is: “ + guessedWord.toString() 120
                210);
        g.drawString(“To continue the game press ENTER“ 120 230);
      } else {
        // 显示所猜的单词
        g.drawString(“Guess a word: “ + guessedWord.toString() 120
            210);

        if (numberOfMisses > 0)
          g.drawString(“Missed letters: “ + missedLetters.toString()
              120 230);
      }

      g.drawArc(20 200 80 40 0 180); // Draw the base
      g.drawLine(20 + 40 200 20 + 40 20); // Draw the pole
      g.drawLine(20 + 40 20 20 + 40 + 100 20); // Draw the hanger

      if (numberOfMisses == 7) {
        if (angle < rightAngle)
          angleDelta = 1; 
        else if (angle > leftAngle)
          angleDelta = -1; 

        angle += angleDelta;
      }

      if (numberOfMisses < 1)
        return;

      int x1 = 20 + 40 + 100;
      int y1 = 20;
      int radius = 20;
      int x = x1 + (int) (radius * Math.cos(Math.toRadians(angle)));
      int y = y1 + (int) (radius * Math.sin(Math.toRadians(angle)));
      g.drawLine(20 + 40 + 100 20 x y); // Draw the hanger

      if (numberOfMisses < 2)
        return;
      
      double length = 20 + 20;
      x = x1 + (int) (length * Math.cos(Math.toRadians(an

评论

共有 条评论