見出し画像

Pythonでゲームを作る - 動かす仕組み。

Pythonでライブラリを使わずにゲームを作る時に必要な仕組みをまとめていきます。

表示部分を作ります。まず表示部分の考え方ですが、

つまりは

field = [
    ["-","-","-","-","-"],
    ["-","-","-","-","-"],
    ["-","-","-","-","-"],
    ["-","-","-","-","-"],
    ["-","-","-","-","-"]
]

のように二次元配列を使います。これをループで作るか、そのまま変数宣言してやるかです。二次元配列でマップを作り土台とします。

表示部分ができればあとは動かす仕組みを作ります。その処理はループ処理が使われます。pythonではwhileが使われます。

    while True:
        for i in field:
            for j in i:
                print(j, end="")
            print("")
        print("======")
        print('up:w left:a down:s right:d')
        key = input('>> ')
        move(key)

の部分がループ処理の部分です。無限ループとなっています。入力すると次の処理、この繰り返しが実行されTrueであるかぎり終わりません。

実際の処理としては

 for i in field:
            for j in i:
                print(j, end="")
            print("")

変数"field"の値を取りだし表示していきます。最初は"*"は

-----
-*---
-----
-----
-----

のように表示されますが、あとは指示通り

up:w left:a down:s right:d

wasdのコマンドを入力していけば上下左右に"*"が動いていきます。


連続的に動かしていくには常に画面の更新をして動いているように見せることが必要になります。

JavaScriptでは特別なコマンドsettimeout    setInterval. が用意されています。

JavaScriptで作られたプロセッシングのライブラリであるp5jsでは簡単に連続して動く仕組みが組み込まれていて簡単に動かすことができるようになっています。

p5jsのフレームレート

function setup() {
  createCanvas(400, 400);
}

function draw() {
  background(220);
}

エディタでは最初から画面ができていて、このまま実行すると灰色の四角が表示されます。この四角の中でいろんなことができるようになっています。

試してみます。

let x = 50;
let y = 50;

function setup() {
  createCanvas(400, 400);
}

function draw() {
  background(220);
   fill(255);
  stroke(255);
  ellipse(x, y, 66, 66);
}

これでまず丸を表示します。実行すると左上に白丸が表示されます。丸の命令としては

ellipse(x, y, 66, 66);

このx、yが表示される座標となっていて今現状の座標は

let x = 50;
let y = 50;

と最初に定義されているものになっているます。左上が

(x,y) = (0,0)

となっているので宣言されている通り左上から50px下で50px右側に丸が表示されます。

これを右側方向に動かすには"x"の値を大きくすれば丸のx座標がその大きくした値が適応され丸の表示も右側へズレていきます。見た目は右に動いていくように見えると思います。

let x = 50;
let y = 50;

function setup() {
  createCanvas(400, 400);
}

function draw() {
  background(220);
   fill(255);
  stroke(255);
  ellipse(x, y, 66, 66);
  
  x += 1
}

コードは

x += 1

を追加するだけです。これで実行すると右側へ動いていきます。数字を大きくしてやると動くスピードも大きくなります。

p5jsでは最初から画面更新されるように作ってあるので

function draw() {
  動かす処理
}

を書いてやれば動いてくれます。pythonですと

while True:

として無限ループを作って処理をしますがその手間なく動き続けるものを作ることができます。

この記事が気に入ったらサポートをしてみませんか?