見出し画像

Godot Engineでfor文が書きたい!~C言語の癖が抜けなくてエラーいっぱい出た話

Godot Engineは無料で使用できてとってもすごいヤツなんですが、1ヶ月間使ってきて苦手なことがあります。
それは…、

for文が慣れなくて書けない!

ボクはもともとC言語を最初に学んだため、その書き方が染み付いてしまってなかなか慣れることができません。
Godot のリファレンスを見ても非常に簡潔に書いてあるため、よくわからないので実際の書き方を忘れないうちにメモしておきます。

extends Node2D

func _ready():
	for _i in range(5):
		print(str(_i))

コンソールの結果は以下の通りです。

出力:

0
1
2
3
4

for [ループに使う変数名を宣言] in range([ループ回数])

range() の中に入っている数字の分ループができます。
もちろん変数を入れることも可能です。

C言語の場合以下のようなコードを書くと同じ結果になります。

#include <stdio.h>

int main(void)
{
    int _i;

    for (_i = 0;_i < 5; _i++)
    {
        printf("%d \n", _i);
    }

    return 0;
}

いつもわからなくなってしまうポイントがありまして…。
ループをするために変数にループ回数を覚えさせる『_i++』この部分がないため頭が混乱してしまうんですよね。

それともう一つ、よくやってしまうエラーがあります。

extends Node2D

func _ready():
	var _i
	# 先に変数 _i を宣言しているため、for文の宣言でエラーがでる
	for _i in range(5):
		print(str(_i))

for の中で変数を宣言する var を書かないため、for文の前で宣言してしまい多重宣言してしまってエラーがでちゃうんです。
これはエディタ側で即エラーだしてくれるので気づくことはできるんですが、癖でやっちゃいます。

最初はこれで詰まったので本当に困りました

ちなみに Godot は Python に似た言語のため、基本的な記述の仕方はそちらで調べるほうが圧倒的に情報が多かったりします。
Google検索で『Godot for文』なんて調べましたが、あまりにも専門的に紹介されすぎていて自分には理解できませんでした。
Python で検索をかけたら1分で解決。うん、最近のお上品な言語に慣れていきたいですね。

ちなみに、switch文はmatch文ってやつにすりかわってました。
ただ、書き方や使い方は一緒だったので特に悩むことはありませんでしたとさ。

いいなと思ったら応援しよう!