資源簡介
gui學(xué)習(xí)成果,通過猜單詞來決定任務(wù)的生存。有七次猜單詞中的字母的機會,如果七次以內(nèi)猜出單詞中所有字母,則勝利。反之,任務(wù)左右搖擺而死去。
代碼片段和文件信息
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???????????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
評論
共有 條評論