(ベータ版:いいねと思ったらtwitterに投稿してもらえると嬉しいです^^)
(おすすめの問題があれば、編集リクエストで追加していただけると助かります)
前回:https://qiita.com/simanezumi1989/items/01690ec883ae8135b3e7
#これはあなた自身の物語です
ときは戦国、、、
ゲーム開発をするためにプログラミングを学び始めたしまづ君(永遠の3才)。
ところが彼はまだまだプログラミングのことがわかっていません。
のちに世界を救うこととなる「スタジオしまづ」設立のために彼にプログラミングを教えましょう!
演習問題を行う前の準備:困った人向け
##演習問題18:配列の宣言方法がわかっている?
しまづくん:「10,20,30」の値を持つ配列を作ろうとしたんだけど、うまくいかなかったんんだ。何がおかしいかな?
しまづ君のコード
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = 10;
int[] numbers = 20;
int[] numbers = 30;
void Start()
{
}
}
---解答ルパン---
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = { 10, 20, 30 };
// 以下でもOK
//int[] numbers = new int[] { 10, 20, 30 };
//int[] numbers = new int[3] { 10, 20, 30 };
void Start()
{
// 関数の中で決めてもOK以下でもOK
// numbers = new int[3] { 10, 20, 30 };
}
}
しまづ君:ありがとう!配列の宣言方法がわかったよ^^
##演習問題19:配列の値取得がわかっている?
しまづくん:ゲーム再生をして、配列の値を全部コンソールに表示しようと思ったんだけど、エラーが出ちゃったよ^^;
何がおかしいかな?
しまづ君のコード
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = { 10, 20, 30 };
void Start()
{
int x = numbers[1];
Debug.Log(x);
int y = numbers[2];
Debug.Log(y);
int z = numbers[3];
Debug.Log(z);
}
}
---解答ルパン---
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = { 10, 20, 30 };
void Start()
{
int x = numbers[0];
Debug.Log(x);
int y = numbers[1];
Debug.Log(y);
int z = numbers[2];
Debug.Log(z);
//以下でもOK
/*
Debug.Log(numbers[0]);
Debug.Log(numbers[1]);
Debug.Log(numbers[2]);
*/
}
}
しまづ君:ありがとう!配列の値取得方法がわかったよ^^
##演習問題20:配列の値変更方法がわかっている?
しまづくん:配列の1番目の値を変更しようとしたけど、うまくいかなかったよ、、、どうやって変えるの?
しまづ君のコード
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = { 10, 20, 30 };
void Start()
{
numbers = 1;
Debug.Log(numbers[1]);
}
}
---解答ルパン---
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = { 10, 20, 30 };
void Start()
{
numbers[1] = 1;
Debug.Log(numbers[1]);
}
}
しまづ君:ありがとう!配列の値変更方法がわかったよ^^
##演習問題21:配列とfor文の組み合わせ?
しまづくん:配列の値を全部コンソールに表示しようとしたんだけど、疲れちゃった。何か簡単にする方法ない?for文使うといいって聞いたんだけど。。。グッスン(TへT)
しまづ君のコード
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = { 10, 20, 30, 1,2,33,-33,44,556,54345,3434 };
void Start()
{
Debug.Log(numbers[0]);
Debug.Log(numbers[1]);
Debug.Log(numbers[2]);
Debug.Log(numbers[3]);
// 疲れちゃったw
}
}
---解答ルパン---
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = { 10, 20, 30, 1,2,33,-33,44,556,54345,3434 };
void Start()
{
for (int i =0 ; i<11; i++)
{
Debug.Log(numbers[i]);
}
//以下でも同じ:nはnumbersに入っている値:これだとiとかいらないからすっきりする
/*
foreach (int n in numbers)
{
Debug.Log(n);
}*/
}
}
しまづ君:ありがとう!配列とfor文の組み合わせがわかったよ!
##演習問題22:配列とfor文の組み合わせ
しまづくん:さっきみたいに配列の値を全部コンソールに表示しようとしたんだけど、配列を変えたら全部表示されなくなっちゃった。配列を変えてもfor文は変えないコードって知ってる?
しまづ君のコード
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = { 10, 20, 30, 1, 2, 33, -33, 44, 556, 54345, 3434, -1, 222, 333 };
void Start()
{
// 3434までしか表示されない
for (int i =0 ; i<11; i++)
{
Debug.Log(numbers[i]);
}
}
}
---解答ルパン---
using UnityEngine;
public class Question : MonoBehaviour
{
int[] numbers = { 10, 20, 30, 1, 2, 33, -33, 44, 556, 54345, 3434, -1, 222, 333 };
void Start()
{
// 3434までしか表示されない
for (int i =0 ; i<numbers.Length; i++)
{
Debug.Log(numbers[i]);
}
}
}
しまづ君:ありがとう!配列とfor文の組み合わせがわかったよ!
##演習問題23:配列とfor文の組み合わせ
しまづくん:配列の値の合計を調べようと思ったんだけど、またどうやって全部足せばいいのか忘れちゃって^^;
for文の使い方もう一度教えてください(TへT)
しまづ君のコード
using UnityEngine;
public class Question : MonoBehaviour
{
int sum = 0;
int[] numbers = { 10, 20, 30, 1, 2, 33, -33, 44, 556, 54345, 3434, -1, 222, 333 };
void Start()
{
sum += numbers[0];
sum += numbers[1];
sum += numbers[2];
// 途中でおわっちゃった、、、for文とかでさくっとできないかな?
}
}
---解答ルパン---
using UnityEngine;
public class Question : MonoBehaviour
{
int sum = 0;
int[] numbers = { 10, 20, 30, 1, 2, 33, -33, 44, 556, 54345, 3434, -1, 222, 333 };
void Start()
{
for (int i=0; i<numbers.Length; i++)
{
sum += numbers[i];
}
Debug.Log(sum);
}
}
しまづ君:ありがとう!配列とfor文の組み合わせがわかったよ!
##演習問題24:List型の宣言方法
しまづくん:List型ってのを作ろうとしたんだけど、うまくいかなくて、、、何をなおせばいいかな?
参考動画:イラスト解説 List型
しまづ君のコード
using UnityEngine;
public class Question : MonoBehaviour
{
string nameList = { "スタジオしまづ", "嶋津恒彦", "しまづ"};
void Start()
{
}
}
---解答ルパン---
using System.Collections.Generic;
using UnityEngine;
public class Question : MonoBehaviour
{
List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};
void Start()
{
}
}
しまづ君:ありがとう!List型はusingも必要なのか!
##演習問題25:List型の値取得と変更方法
しまづくん:List型の値の取得と変更をしようとしたんだけどうまくいかなく。どうすればいいかな?
しまづ君のコード
using System.Collections.Generic;
using UnityEngine;
public class Question : MonoBehaviour
{
List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};
void Start()
{
// コンソールに0番目を表示したい
// 0番目の値を"スタジオしまづアカデミア"に変更したい
// コンソールに0番目を表示したい
}
}
---解答ルパン---
using System.Collections.Generic;
using UnityEngine;
public class Question : MonoBehaviour
{
List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};
void Start()
{
// コンソールに0番目を表示したい
string firstName = nameList[0];
Debug.Log(firstName);
Debug.Log(nameList[0]); // これでもOK
// 0番目の値を"スタジオしまづアカデミア"に変更したい
nameList[0] = "スタジオしまづアカデミア";
// コンソールに0番目を表示したい
Debug.Log(nameList[0]);
}
}
しまづ君:ありがとう!リスト型って配列と同じようなものなんだね^^
##演習問題26:List型とfor文
しまづくん:List型と配列って同じようなものなら、値を全部表示するのも同じようにできるよね!でも長さの部分をどうするんだろ、、、教えて教えて^^
しまづ君のコード
using System.Collections.Generic;
using UnityEngine;
public class Question : MonoBehaviour
{
List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};
void Start()
{
// for文を使って以下と同じログを表示したい
Debug.Log(nameList[0]);
Debug.Log(nameList[1]);
Debug.Log(nameList[2]);
}
}
---解答ルパン---
using System.Collections.Generic;
using UnityEngine;
public class Question : MonoBehaviour
{
List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};
void Start()
{
for (int i=0; i<nameList.Count; i++)
{
Debug.Log(nameList[i]);
}
}
}
しまづ君:ありがとう!リスト型はCountを使うのか!^^
##演習問題27:List型の値の追加
しまづくん:List型は値を追加できるって聞いたけど、どうやってやるの?"スタジオしまづアカデミア"を追加したい!
しまづ君のコード
using System.Collections.Generic;
using UnityEngine;
public class Question : MonoBehaviour
{
List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};
void Start()
{
// nameListに"スタジオしまづアカデミア"を追加したい:Addってのを使う
// 追加したあと、全ての値をログに表示して追加されたのを確認したい
}
}
---解答ルパン---
using System.Collections.Generic;
using UnityEngine;
public class Question : MonoBehaviour
{
List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};
void Start()
{
// nameListに"スタジオしまづアカデミア"を追加したい:Addってのを使う
nameList.Add("スタジオしまづアカデミア");
// 追加したあと、全ての値をログに表示して追加されたのを確認したい
for (int i=0; i<nameList.Count; i++)
{
Debug.Log(nameList[i]);
}
// 以下でもOK
/*
foreach (string name in nameList)
{
Debug.Log(name);
}
*/
}
}
しまづ君:ありがとう!リスト型はAddって便利だね^^
##演習問題28:List型の値の削除
しまづくん:List型は値の削除ができるって聞いたけど、どうやってやるの?"アンチスタジオしまづ"をこの世から抹殺したい!!!!
しまづ君のコード
using System.Collections.Generic;
using UnityEngine;
public class Question : MonoBehaviour
{
List<string> nameList = new List<string>{ "スタジオしまづ", "アンチスタジオしまづ", "しまづ"};
void Start()
{
// nameListの"アンチスタジオしまづ"を消したい
}
}
---解答ルパン---
using System.Collections.Generic;
using UnityEngine;
public class Question : MonoBehaviour
{
List<string> nameList = new List<string>{ "スタジオしまづ", "アンチスタジオしまづ", "しまづ"};
void Start()
{
// nameListの"アンチスタジオしまづ"を消したい
nameList.Remove("アンチスタジオしまづ");
// 番号指定での削除もできるよ
//nameList.RemoveAt(1);
for (int i = 0; i < nameList.Count; i++)
{
Debug.Log(nameList[i]);
}
// 以下でもOK
/*
foreach (string name in nameList)
{
Debug.Log(name);
}
*/
}
}
しまづ君:ありがとう!これでアンチも消えたね!
##つづき