[英]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.