Unityでのゲーム開発を目指して勉強中です。今大体3週間ほど経ちました。
そろそろ入門レベルから次のステップに行こうと考えているのですが、自粛の影響であっちこっち行って書籍を確認する事も難しい上に値段も相当張るので中々決めかねています。
(若干前回の質問と重複していますが、デザイン設計は私にはまだ早いと結論付けました)
目星をつけているのは
>実戦で役立つC#プログラムのイディオム/定石&パターン
>C#2019逆引き大全
>究極のC#プログラミング
です。
それとももうUnityの専門書に手を出して良いものなんでしょうか。さすがに入門書を終えた段階では早いでしょうか?
ちなみに私は情報学部でもなんでもないのでアルゴリズム(という言葉が何を意味するのかもよく理解していません)すら触れたこともありません。与えられた文法を書き殴っている感じです。情報学部の畑を歩いた人が当然にやってきたことは何一つせずいきなりC#から入っています。
*完全に独学故、自分のレベルもよく分かってないので下記に自分が0から書いたコードを載せておきます。
public class GameSystem { public int Matrix { get; set; } public int Player { get; set; } public int PlayerChanger { get; set; } public string[] Color { get; set; } public string[,] Place { get; set; } public string Blank { get; private set; } public GameSystem() { Matrix = 3; Player = 0; PlayerChanger = 1; Color = new string[] { "⚫️" , "⚪️" }; Blank = "⬜︎"; Place = new string[Matrix, Matrix]; for (int i = 0; i < Place.GetLength(0); i++) { for (int j = 0; j < Place.GetLength(1); j++) { Place[i, j] = Blank; } } Place[(int)(Matrix / 2) - 1, (int)(Matrix / 2) - 1] = Color[0]; Place[(int)(Matrix / 2), (int)(Matrix / 2)] = Color[0]; Place[(int)(Matrix / 2) - 1, (int)(Matrix / 2)] = Color[1]; Place[(int)(Matrix / 2), (int)(Matrix / 2) - 1] = Color[1]; } public void Put(int x, int y) { Place[y, x] = Color[Player]; } public void Reverse(int x, int y) { //右 for (int i = 1; x + i < Place.GetLength(1); i++) { if (Place[y, x + i] == Blank) { break; } else if (Place[y, x + i] == Color[Player]) { for (int j = 1; j < i; j++) { Place[y, x + j] = Color[Player]; } break; } } //左 for (int i = 1; x - i >= 0; i++) { if (Place[y, x - i] == Blank) { break; } else if (Place[y, x - i] == Color[Player]) { for (int j = 1; j < i; j++) { Place[y, x - j] = Color[Player]; } break; } } //上 for (int i = 1; y + i < Place.GetLength(0); i++) { if (Place[y + i, x] == Blank) { break; } else if (Place[y + i, x] == Color[Player]) { for (int j = 1; j < i; j++) { Place[y + j, x] = Color[Player]; } break; } } //下 for (int i = 1; y - i >= 0; i++) { if (Place[y - i, x] == Blank) { break; } else if (Place[y - i, x] == Color[Player]) { for (int j = 1; j < i; j++) { Place[y - j, x] = Color[Player]; } break; } } //右斜め上 for (int k = 1; y + k < Place.GetLength(0) && x + k < Place.GetLength(1); k++) { if (Place[y + k, x + k] == Blank) { break; } else if (Place[y + k, x + k] == Color[Player]) { for (int r = 1; r < k; r++) { Place[y + r, x + r] = Color[Player]; } break; } } //左斜め下 for (int k = 1; y - k >= 0 && x - k >= 0; k++) { if (Place[y - k, x - k] == Blank) { break; } else if (Place[y - k, x - k] == Color[Player]) { for (int r = 1; r < k; r++) { Place[y - r, x - r] = Color[Player]; } break; } } //左斜め上 for (int k = 1; y + k < Place.GetLength(0) && x - k >= 0; k++) { if (Place[y + k, x - k] == Blank) { break; } else if (Place[y + k, x - k] == Color[Player]) { for (int r = 1; r < k; r++) { Place[y + r, x - r] = Color[Player]; } break; } } //右斜め下 for (int k = 1; y - k >= 0 && x + k < Place.GetLength(1); k++) { if (Place[y - k, x + k] == Blank) { break; } else if (Place[y - k, x + k] == Color[Player]) { for (int r = 1; r < k; r++) { Place[y - r, x + r] = Color[Player]; } break; } } } public void OutPutPieces() { for (int i = 0; i < Place.GetLength(0); i++) { for (int j = 0; j < Place.GetLength(1); j++) { Console.Write(Place[i, j]); } Console.WriteLine(); } } public bool Pass(GameSystem gameSystem) { var passBool = true; for (int i = 0; passBool == true && i < Place.GetLength(0); i++) { for (int j = 0; passBool == true && j < Place.GetLength(1); j++) { if (Place[i, j] == Blank && gameSystem.ReverseCounter(i, j) != 0) { passBool = false; } } } return passBool; } public void SwapPlayer() { int swap; swap = Player; Player = PlayerChanger; PlayerChanger = swap; } } }
回答4件
あなたの回答
tips
プレビュー