第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

帶窗戶(hù)的石頭剪刀布游戲

帶窗戶(hù)的石頭剪刀布游戲

C#
慕勒3428872 2022-06-12 10:40:02
我正在為學(xué)校作業(yè)制作搖滾、紙、剪刀游戲,但是當(dāng)我嘗試運(yùn)行此腳本時(shí),游戲無(wú)法正常運(yùn)行。例如,當(dāng)我單擊 Rock 時(shí),計(jì)算機(jī)只會(huì)選擇相同或選擇紙張。但玩家永遠(yuǎn)不會(huì)贏。我不知道如何解決這個(gè)問(wèn)題,我已經(jīng)嘗試了幾個(gè)小時(shí)。這是我的代碼:public partial class MainWindow : Window{    string Computer;    string[] computer = { "Rock", "Paper", "Scissors" };    Random random = new Random();    int RandomType;    string PlayerPicks;    public MainWindow()    {        InitializeComponent();    }    private void StoneButton_Click(object sender, RoutedEventArgs e)    {        PlayerPicks = "Rock";        RandomType = random.Next(0, 2);        Computer = computer[RandomType];        Game();    }    private void PaperButton_Click(object sender, RoutedEventArgs e)    {        PlayerPicks = "Paper";        RandomType = random.Next(0, 2);        Computer = computer[RandomType];        Game();    }    private void ScissorsButton_Click(object sender, RoutedEventArgs e)    {        PlayerPicks = "Scissors";        RandomType = random.Next(0, 2);        Computer = computer[RandomType];        Game();    }    void Game()    {        string message = "The winner is: ";        string computerWins = "Computer!";        string playerWins = "Player!";        string draw = "N-Nobody?";        if (PlayerPicks == "Rock" && Computer == "Paper") // Player: Rock, Computer: paper = computer wins        {            MessageBox.Show(message + computerWins);        }        else if (PlayerPicks == "Rock" && Computer == "Scissors") // Player: Rock, Computer: Scissors = Player wins        {            MessageBox.Show(message + playerWins);        }   
查看完整描述

3 回答

?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊

問(wèn)題 1

RandomType = random.Next(0, 2)只生成一個(gè)介于 0 和 1 之間的數(shù)字,您需要這樣做RandomType = random.Next(0, 3)這將生成一個(gè)介于 0 和 2 之間的數(shù)字

問(wèn)題 2

if (PlayerPicks == "Scissors" && Computer == "Scissor")檢查計(jì)算機(jī)是否選擇Scissor而不是Scissors只需將其更改為if (PlayerPicks == "Scissors" && Computer == "Scissors")


查看完整回答
反對(duì) 回復(fù) 2022-06-12
?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

這是另一種方法。它已從您的代碼中進(jìn)行了極大的重構(gòu)。首先,我在表單類(lèi)中添加了一個(gè)私有System.Random成員字段:


private Random _rand = new Random();

然后,我設(shè)置了兩個(gè)enums,一個(gè)用于“手勢(shì)”(石頭、紙、剪刀),另一個(gè)用于結(jié)果:


public enum HandSign

{

    Rock,           // rock beats scissors

    Paper,          // paper beats rock

    Scissors,       // scissors beats paper

}


public enum Result

{

    Draw,

    ComputerWins,

    PlayerWins

}

然后我創(chuàng)建了一些輔助函數(shù),首先確定計(jì)算機(jī)的下一步動(dòng)作:


private HandSign GetRandomPlay()

{

    var result = _rand.Next(0, Enum.GetValues(typeof(HandSign)).Length);

    return (HandSign) result;

}

接下來(lái)是確定獲勝者的規(guī)則引擎:


private Result DetermineWinner(HandSign player, HandSign computer)

{

    if (player == computer)

    {

        return Result.Draw;

    }


    if (player == HandSign.Scissors && computer == HandSign.Rock)

    {

        return Result.ComputerWins;

    }


    if (player == HandSign.Rock && computer == HandSign.Scissors)

    {

        return Result.PlayerWins;

    }


    if (player > computer)

    {

        return Result.PlayerWins;

    }


    //finally, otherwise

    return Result.ComputerWins;

}

最后來(lái)一張“玩游戲”,在表格上的一把標(biāo)簽上展示了玩的結(jié)果:


 private void PlayGame(HandSign playerPicks)

 {

     PlayerPicksLbl.Text = playerPicks.ToString();

     var computerPicks = GetRandomPlay();

     ComputerPicksLbl.Text = computerPicks.ToString();

     WinnerLbl.Text = DetermineWinner(playerPicks, computerPicks).ToString();

 }

那時(shí),我的三個(gè)按鈕單擊處理程序看起來(lái)像這樣(這是 Rock 處理程序):


 private void RockBtn_Click(object sender, EventArgs e)

 {

     PlayGame(HandSign.Rock);

 }

以這種方式構(gòu)造事物的一個(gè)結(jié)果是將其擴(kuò)展到“Rocks, Paper, Scissors, Lizard, Spock”,您需要做的就是向枚舉添加兩個(gè)條目,向兩個(gè)條目添加HandSign更多邏輯DetermineWinner更多按鈕/按鈕處理程序。


另請(qǐng)注意,沒(méi)有辦法拼錯(cuò)“剪刀”,仍然可以編譯!


查看完整回答
反對(duì) 回復(fù) 2022-06-12
?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

在 Random.Next 上,上限是獨(dú)占的,所以你應(yīng)該這樣做 RandomType = random.Next(0, 3);

此外在:

if (PlayerPicks == "Scissors" && Computer == "Scissor")你有“Scissor”而不是“Scissor s ”


查看完整回答
反對(duì) 回復(fù) 2022-06-12
  • 3 回答
  • 0 關(guān)注
  • 150 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)