1

コードは現在更新されており、完了したと感じるまでに 2 つの問題しか残っていません。

プレイヤーが壁にぶつかると、ヒットごとにカウンターが 2 ライフ減少します。

ゲームが開始されると、プレイヤーが壁にぶつかったときにのみ鳴るはずの音(beep.wav)がゲームを開始するたびに鳴り、ゲーム全体で再生されるはずの音(onestop.wav)が再生されませんまったく。

public partial class Form1 : Form       
{
            // This SoundPlayer plays a song when the game begins.
    System.Media.SoundPlayer onestop = new System.Media.SoundPlayer(@"C:\Users\kC\Favorites\Desktop\Kev stuff\Projects\MazeGame\onestop.wav");

    // This SoundPlayer plays a sound whenever the player hits a wall.
    System.Media.SoundPlayer beepSound = new System.Media.SoundPlayer(@"C:\Users\kC\Favorites\Desktop\Kev stuff\Projects\MazeGame\beep.wav");

    // This SoundPlayer plays a sound when the player finishes the game.
    System.Media.SoundPlayer clapSound = new System.Media.SoundPlayer(@"C:\Users\kC\Favorites\Desktop\Kev stuff\Projects\MazeGame\winningApplause.wav");


    public Form1()
    {
        InitializeComponent();
        timer1.Interval = (1000) * (1);
        timer1.Enabled = true;
        timer1.Start();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

        begin();

    }

    private void begin()
    {
        onestop.Play();
        livesTextBox.Text = lives.ToString();
        Point startingPoint = panel1.Location;
        startingPoint.Offset(10, 10);
        Cursor.Position = PointToScreen(startingPoint);
    }

    int lives = 5;

    private void MoveToStart()
    {

        if ( lives > 0)
        {
            lives--;
        }
        if (lives == 0)
        {
            MessageBox.Show("You Lose!!");
            Close();
        }

        else if (lives < 0)
        {
            MessageBox.Show("You Lose!!");
            Close();
        }
    }

    private void wall_MouseEnter(object sender, EventArgs e)
    {
        // When the mouse pointer hits a wall or enters the panel,
        // call the MoveToStart() method.
        beepSound.Play();
        MoveToStart();

        lives--;
        livesTextBox.Text = lives.ToString();
    }

    private void finishLabel_MouseEnter(object sender, EventArgs e)
    {
        // Play a sound, show a congratulatory MessageBox, then close the form.
        clapSound.Play();
        MessageBox.Show("Congratulations! You've beaten the maze!");
        Close();
    }

    int gameElapsed = 0;

    private void timer1_Tick(object sender, EventArgs e)
    {
        gameElapsed++;
        textBox1.Text = "" + gameElapsed.ToString();
    }


}
4

3 に答える 3

1

フォームに間隔 1000 のタイマーを作成し、それを有効にしてから、クラスと timer_tick write のプライベート フィールドとして game_elpased を整数として定義します。

void Timer1_Tick(object Sender,EventArgs e)
{
  game_elapsed++;
  textBox1.Text = "Elapsed Seconds : " + game_elapsed.ToString();
}

ライブ時間については、プレーヤーが失敗したときに、ライブのようにパブリック変数を制御する必要があります。

if(fails && lives>0){
  lives--;
}
else if (lives<0)
{
  MessageBox.Show("You are a looser ...");
}
于 2012-12-17T17:17:42.387 に答える
1

あなたはコードをあまり明確に投稿していませんが、私は助けようとします.

サウンドの問題については不明です。しかし、「タイマーを呼び出す」には、テキストボックスに数字を入れたいと思いますか? あなたはそこまでの道のりです。オブジェクトはTimer毎秒 tick イベントを呼び出すだけなので、表示部分を実行する必要があります。

テキスト ボックスをフォームに配置しますtextBox1

メソッドの前に置くbegin()

Stopwatch stopWatch = new Stopwatch();

begin()メソッドの中に入れる

stopWatch.Start();

メソッド内timer1_Tick

TimeSpan ts = stopWatch.Elapsed;
textBox1.Text = String.Format("{0:00}:{1:00}", ts.Minutes, ts.Seconds);

あなたの「命」のために、begin()メソッドの前に、

int lives = 0;

の中begin()に入れて

int lives = 5;
livesTextBox.Text = lives.toString();

そして中wall_MouseEnter()に入れて

lives--;
livesTextBox.Text = lives.toString();

(フォームに a を描画したと仮定しますlivesTextBox)

于 2012-12-17T17:11:15.140 に答える
0

ライフはプレイヤー クラスのプロパティにすることができます。

public class Player
{
    int lives = 5;

    public bool Kill()
    {
        this.lives--;
        return this.lives <= 0;
    }

    public void run()
    {
        Player player = new Player();

        // do stuff

        // Check whether the player needs to die
        if ("player fails".Contains("fail"))
        {
            if (player.Kill())
            {
                // restart level.
            }
            else
            {
                // Game over.
            }
        }
    }
}
于 2012-12-17T17:19:11.453 に答える