LoginSignup
12
3

More than 3 years have passed since last update.

C#&Unityの演習問題:しまづ君にプログラミングを教えよう!パート2【スタジオしまづアカデミア】

Last updated at Posted at 2020-03-02

(ベータ版:いいねと思ったらtwitterに投稿してもらえると嬉しいです^^)
(おすすめの問題があれば、編集リクエストで追加していただけると助かります)

前回:https://qiita.com/simanezumi1989/items/01690ec883ae8135b3e7

これはあなた自身の物語です

ときは戦国、、、
ゲーム開発をするためにプログラミングを学び始めたしまづ君(永遠の3才)。
ところが彼はまだまだプログラミングのことがわかっていません。
のちに世界を救うこととなる「スタジオしまづ」設立のために彼にプログラミングを教えましょう!

演習問題を行う前の準備:困った人向け

スタジオしまづのYouTube
スタジオしまづの学習サイト

演習問題18:配列の宣言方法がわかっている?

しまづくん:「10,20,30」の値を持つ配列を作ろうとしたんだけど、うまくいかなかったんんだ。何がおかしいかな?

しまづ君のコード

Question.cs
using UnityEngine;

public class Question : MonoBehaviour
{
    int[] numbers = 10;
    int[] numbers = 20;
    int[] numbers = 30;
    void Start()
    {
    }
}

---解答ルパン---

Question.cs
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:配列の値取得がわかっている?

しまづくん:ゲーム再生をして、配列の値を全部コンソールに表示しようと思ったんだけど、エラーが出ちゃったよ^^;
何がおかしいかな?
スクリーンショット 2020-03-02 15.37.38.png

しまづ君のコード

Question.cs
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);

    }
}

---解答ルパン---

Question.cs
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番目の値を変更しようとしたけど、うまくいかなかったよ、、、どうやって変えるの?

しまづ君のコード

Question.cs
using UnityEngine;

public class Question : MonoBehaviour
{
    int[] numbers = { 10, 20, 30 };
    void Start()
    {
        numbers = 1;
        Debug.Log(numbers[1]);
    }
}

---解答ルパン---

Question.cs
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)

しまづ君のコード

Question.cs
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
    }
}

---解答ルパン---

Question.cs
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文は変えないコードって知ってる?

しまづ君のコード

Question.cs
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]);
        }
    }
}

---解答ルパン---

Question.cs
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)

しまづ君のコード

Question.cs
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文とかでさくっとできないかな?

    }
}

---解答ルパン---

Question.cs
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型
しまづ君のコード

Question.cs
using UnityEngine;

public class Question : MonoBehaviour
{
    string nameList = { "スタジオしまづ", "嶋津恒彦", "しまづ"};
    void Start()
    {
    }
}

---解答ルパン---

Question.cs
using System.Collections.Generic;
using UnityEngine;

public class Question : MonoBehaviour
{
    List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};
    void Start()
    {
    }
}

しまづ君:ありがとう!List型はusingも必要なのか!

演習問題25:List型の値取得と変更方法

しまづくん:List型の値の取得と変更をしようとしたんだけどうまくいかなく。どうすればいいかな?

しまづ君のコード

Question.cs
using System.Collections.Generic;
using UnityEngine;

public class Question : MonoBehaviour
{
    List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};
    void Start()
    {
        // コンソールに0番目を表示したい
        // 0番目の値を"スタジオしまづアカデミア"に変更したい
        // コンソールに0番目を表示したい

    }
}

---解答ルパン---

Question.cs
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型と配列って同じようなものなら、値を全部表示するのも同じようにできるよね!でも長さの部分をどうするんだろ、、、教えて教えて^^

しまづ君のコード

Question.cs
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]);
    }
}

---解答ルパン---

Question.cs
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型は値を追加できるって聞いたけど、どうやってやるの?"スタジオしまづアカデミア"を追加したい!

しまづ君のコード

Question.cs
using System.Collections.Generic;
using UnityEngine;

public class Question : MonoBehaviour
{
    List<string> nameList = new List<string>{ "スタジオしまづ", "嶋津恒彦", "しまづ"};

    void Start()
    {
        // nameListに"スタジオしまづアカデミア"を追加したい:Addってのを使う


        // 追加したあと、全ての値をログに表示して追加されたのを確認したい
    }
}

---解答ルパン---

Question.cs
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型は値の削除ができるって聞いたけど、どうやってやるの?"アンチスタジオしまづ"をこの世から抹殺したい!!!!

しまづ君のコード

Question.cs
using System.Collections.Generic;
using UnityEngine;

public class Question : MonoBehaviour
{
    List<string> nameList = new List<string>{ "スタジオしまづ", "アンチスタジオしまづ", "しまづ"};

    void Start()
    {
        // nameListの"アンチスタジオしまづ"を消したい
   }
}

---解答ルパン---

Question.cs
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);
        }
        */

    }
}

しまづ君:ありがとう!これでアンチも消えたね!

つづき

  • つづき:いいねと思ったらtwitterでシェアお願いします^^
  • スタジオしまづのYouTube:チャンネル登録お願いします!
  • スタジオしまづの学習サイト:特典:Udemyを含む動画教材見放題+オンラインサロンの加入
12
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
3