前言
前面我們講完資料類型,迴圈,條件判斷。
那當然就是要綜合起來小小練習啦~
透過多練習,思考如何解決這個問題,就算解出來了,也可以再看看有沒有更好的更有效率的寫法。
多看多寫在遇到問題需要被解決的時候,就可以越快的解題喔~
先來個簡單的題目暖暖身。
題目: 輸入一個數字,如果它是偶數,輸出“偶數”,否則輸出“奇數”。
//奇數偶數
Console.Write("請輸入數字: ");
string input = Console.ReadLine();
int num;
int result;
bool isInt = int.TryParse(input, out result);
bool number = int.TryParse(input, out num) ;
if (!isInt)
{
Console.WriteLine("僅限輸入整數");
return; ; }
if (num % 2 == 0) {
Console.WriteLine("這是偶數");
}
else if (num % 2 == 1) {
Console.WriteLine("這是奇數");
}
else { Console.WriteLine("請輸入數字"); }
上面這段程式碼要求使用者輸入一個數字,然後開始透過條件判斷,用取餘數的方式檢查數字為奇數或偶數,並確保輸入是整數。
bool isInt = int.TryParse(input, out result);
:這行程式碼嘗試將使用者輸入的 input 轉換為整數,如果成功,將結果存儲在 result 變數中。同時,它會將轉換的成功與否存儲在 isInt 布林變數中。
bool number = int.TryParse(input, out num);
:這行程式碼也是嘗試將使用者的輸入轉換為整數,並將結果存儲在 num 變數中。這是用於後面的奇偶數檢查。
如果輸入不是整數就顯示錯誤消息。
如果輸入是整數,就檢查數字是奇數還是偶數,然後輸出相應的訊息。
除了上面的練習以外,還可以做個小小遊戲,首先是猜拳遊戲,這個應該都很熟悉,剪刀,石頭,布的遊戲,那要怎麼使用條件判斷來呈現平手或是勝負呢?
var scissor = 0;
var stone = 1;
var paper = 2;
Console.WriteLine("剪刀為0,石頭為1,布為2");
Console.Write("玩家1請輸入您的選擇: ");
int player1 = Convert.ToInt32(Console.ReadLine());
Console.Write("玩家2請輸入您的選擇: ");
int player2 = Convert.ToInt32(Console.ReadLine());
string result = "玩家1您出: {0},玩家2您出: {1}";
string message = String.Format(result, player1, player2);
if (player1 == player2)
{
Console.WriteLine(message + "平手喔!再來一次!");
}
else if ((player1 + 1) % 3 == player2)
{
Console.WriteLine(message + "玩家2獲勝!");
}
else if ((player2 + 1) % 3 == player1)
{
Console.WriteLine(message + "玩家1獲勝!");
}
else
{
Console.WriteLine("您輸入非正確的值,請重新輸入");
}
當你要判斷猜拳遊戲的勝負時,有三種可能的選擇:剪刀(0)、石頭(1)和布(2)。你的程式需要根據這三種選擇來判斷誰贏了。
這個程式片段的關鍵是判斷勝者的部分,來看下面程式碼的解釋:
這樣,我們通過簡化判斷過程,使程式更容易理解和維護。此外,這個方法適用於任何數量的選擇,只需將3更改為選擇的總數即可。在這個案例中,我們使用了3,因為有3種猜拳選擇。
上面猜拳遊戲完再來一個猜數字遊戲。這裡使用了條件判斷句,還有迴圈的方式,來去設計。
猜數字遊戲猜1~100以內的數字,玩家每次輸入一個數字,程式會檢查它是否與目標數字相等,然後給予提示。當玩家猜對時,遊戲結束並顯示猜測的次數。(可以試看看怎麼做出來。)
以下是程式碼
static void Main()
{
Random random = new Random();
int targetNumber = random.Next(1, 101); // 隨機生成1到100之間的數字
int attempts = 0;
bool hasGuessedCorrectly = false;
Console.WriteLine("歡迎來到猜數字遊戲!");
Console.WriteLine("我已經想好了一個1到100之間的數字,請開始猜測。");
while (!hasGuessedCorrectly)
{
Console.Write("請輸入你的猜測: ");
string input = Console.ReadLine();
if (int.TryParse(input, out int guess))
{
attempts++;
if (guess < targetNumber)
{
Console.WriteLine("猜得太小了,再試試看!");
}
else if (guess > targetNumber)
{
Console.WriteLine("猜得太大了,再試試看!");
}
else
{
Console.WriteLine($"恭喜你,猜對了!答案是{targetNumber}。你總共猜了{attempts}次。");
hasGuessedCorrectly = true;
}
}
else
{
Console.WriteLine("請輸入有效的數字。");
}
}
}
上面的程式碼,猜數字遊戲的結果大概像這樣,先有個猜數字遊戲畫面
會根據輸入的數字判斷大小
猜錯會繼續跑迴圈詢問
一直到猜對為止
裡面首先要先解釋使用Random類別(虛擬亂數產生器)來生成一個隨機數字,用於猜數字遊戲中的目標數字。
Random這個類別是用來產生隨機值的,在使用Random以前需要先宣告,已建立Random的物件。
Random random_name = new Random(); // random_name自取
資料型別就是使用Random這個類型,建立了一個名為 random 的 Random 類別的實例。這個類別可以幫助我們生成隨機數字。
int targetNumber = random.Next(1, 101);
:這行程式碼使用 random 物件的 Next 方法生成一個隨機數字,將其存儲在 targetNumber 變數中。
Next 是用來生成一個隨機整數的方法,其中的兩個參數分別指定了生成隨機數的範圍。
這裡要注意,使用Next方法後面的兩個參數
第一個參數 (1) 指定了範圍的起始值。
第二個參數 (101) 指定了範圍的結束值,但不包括這個結束值。
因此,random.Next(1, 101) 會生成一個從1到100之間(包括1但不包括101)的隨機整數。這樣的設計是為了讓生成的數字完全落在1到100的範圍內,因為 Next 方法的結束值是開放範圍的,不包括結束值本身。
在這個例子中,我們設定範圍為從1到100,因此 targetNumber 將包含一個從1到100之間(包括1和100)的隨機整數。
int attempts = 0;
:先初始化一個 attempts 的變數,主要是用來記錄玩家猜測的次數。bool hasGuessedCorrectly = false;
:再初始化一個布林變數 hasGuessedCorrectly ,因為我們要追蹤判斷玩家有沒有猜對。用於追蹤玩家是否猜對了。以上就是幾個小小的綜合練習,針對前面已經教了的部分來去做進階練習。
Day 6 結束~ 就這樣完成快一周摟~