深入淺出 C# 4/e 第六章 心得分享
分類
建立時間: 2022年8月10日 02:47
更新時間: 2022年8月19日 21:06
心得
此心得包含第六章、附錄1 第六章、附錄2 第六章、Unity 實驗室 #3
最近一直在研究遊戲開發和念英文還有更新網站,已經快兩個月沒看這本書了
繼續看下個章節的時候,突然覺得有點陌生,雖然我已經在用 Unity 開發遊戲了
但所用的程式只有簡易的腳本
看了這麼久,這章才看到 switch 陳述式,果真有夠大本的…
.NET 6 main 建立函式
除了之前提過的 .NET 6 main 變成條列式的結構以外,這次補充建立函式
以下是第六章,第一題習題的 Program.cs 使用 .NET 6 的寫法
int RollDice()
這個就是函式
Program.cs
using WeaponDamage;
Random random = new Random();
SwordDamage swordDamage = new SwordDamage(RollDice(3));
ArrowDamage arrowDamage = new ArrowDamage(RollDice(1));
while (true)
{
Console.Write("0 for no magic/flaming, 1 for magic, 2 for flaming, " +
"3 for both, anything else to quit: ");
char key = Console.ReadKey().KeyChar;
if (key != '0' && key != '1' && key != '2' && key != '3') return;
Console.Write("\nS for sword, A for arrow, anything else to quit: ");
char weaponKey = Char.ToUpper(Console.ReadKey().KeyChar);
switch (weaponKey)
{
case 'A':
arrowDamage.Roll = RollDice(1);
arrowDamage.Magic = (key == '1' || key == '3');
arrowDamage.Flaming = (key == '2' || key == '3');
Console.WriteLine($"\nRolled {arrowDamage.Roll} for {arrowDamage.Damage} HP\n");
break;
case 'S':
swordDamage.Roll = RollDice(3);
swordDamage.Magic = (key == '1' || key == '3');
swordDamage.Flaming = (key == '2' || key == '3');
Console.WriteLine($"\nRolled {swordDamage.Roll} for {swordDamage.Damage} HP\n");
break;
default:
return;
}
}
int RollDice(int numberOfRolls)
{
int result = 0;
for (int i = 0; i < numberOfRolls; i++)
{
result += random.Next(1, 7);
}
return result;
}
小鳥下蛋習題
一般我們看到的 array 會是 int a[]
或者 string b[]
我在小鳥下蛋習題看到 Egg[]
一開始看到我突然當機
後來想通了
Egg.cs
using System;
namespace PigeonAndOstrich
{
public class Egg
{
public double Size
{
get;
private set;
}
public string Color
{
get;
private set;
}
public string Description
{
get
{
return $"A {Size:0.0}cm {Color} egg";
}
}
public Egg(double size, string color)
{
Size = size;
Color = color;
}
}
}
Egg[]
意思是這個 array 裡的值都是 Egg
型態
return new Egg[0]
就是回傳初始化0個空間,型態為 Egg
的 array
有關陣列的說明,請參考 一維陣列 (C# 程式設計手冊)
蜂巢管理遊戲
在還沒改動遊戲機制的情況下,我終於養到不會輸的情況
MDA
這篇論文我沒有看,裡面寫的內容很有可能跟我之前在思考的賭博心態有關
博弈遊戲目的是如何使玩家輸最多錢,而玩家思考的是如何賺最多錢
遊戲是經營方提供的,他們不會很傻的讓遊戲每一局都輸
因為這樣過沒多久,這個遊戲就不會有人想玩了
究竟要怎麼設計才能好玩一直玩,輸錢輸不停呢?
有興趣的可以參考 MDA 論文
參考
觀看次數: 790
c#unity心得深入淺出
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!