簡體   English   中英

如何將我的簡單游戲減少到18行MATLab代碼

[英]How do I reduce my simple game to 18 lines of MATLab code

我最近的任務是將用MATLab代碼編寫的簡單游戲減少到最多18行代碼。 這可以通過消除冗余來完成,但是到目前為止,我很難區分它們。 我的代碼當前運行到24行。

游戲要求如下:

“在本練習中,您需要實現一個簡單的兩人計數游戲。該游戲首先將計數設置為0。這兩名玩家應輪流在數字1和2之間進行選擇。在每一輪中,當前玩家選擇的數字達到10或更大的值的玩家將贏得比賽,程序應檢查輸入的正確性,下圖顯示了示例。

注意:您必須使程序最多包含18行代碼,但不允許在同一行上放置多個語句/命令來實現此目標。”

還有一件事:我注意到我的代碼的這一部分...

if count >= 10
    disp('Player x wins!');
end

...位置不正確,因為即使玩家1獲勝並且游戲大聲疾呼如此,玩家2仍會被要求輸入數字。 我也不知道該如何解決。 抱歉! (我確信以某種方式更改此代碼將有助於將總行數減少到18。)

請幫我! 我已經把頭發扯了3個小時了!

謝謝!

clear
clc
count = 0;
while count < 10;
    oneOrTwo = input('Player 1\nEnter 1 or 2: '); % Player 1 choose
    while oneOrTwo ~= 1 && oneOrTwo ~= 2
        oneOrTwo = input('Incorrect input. Try again: ');
    end
    count = count + oneOrTwo;
    if count >= 10
        disp('Player 1 wins!');
    end
    oneOrTwo = input('Player 2\nEnter 1 or 2: '); % Player 2 choose
    while oneOrTwo ~= 1 && oneOrTwo ~= 2
        oneOrTwo = input('Incorrect input. Try again: ');
    end
    count = count + oneOrTwo;
    if count >= 10
        disp('Player 2 wins!');
    end
end % This currently ends at line 24

我設法將其簡化為12行代碼。 嘗試這個:

clc
count = 0;
player = 1;  % 0: player 1,  1: player 2
while count < 10;
    player = mod(player+1,2);
    oneOrTwo = input(['Count: ' num2str(count) '\nPlayer ' num2str(player+1) '\nEnter 1 or 2: ']);
    while oneOrTwo ~= 1 && oneOrTwo ~= 2
        oneOrTwo = input('Incorrect input. Try again: ');
    end
    count = count + oneOrTwo;
end
disp(['Player ' num2str(player+1) ' wins!']);

如您所見,輸入過程通過使用player變量壓縮為一個。

從那一刻開始就取消了獲勝條件,因為一旦count超過10,循環便結束了。 然后,顯示中獎者消息。

刪除了clear指令,因為兩個主要變量均在開始時進行了初始化。

要求輸入時還添加了當前count信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM