【Pygame Zero】キャラクターの座標を 表示する

こんにちは!
「Pythonしよう!楽しく学べるプログラミング教室」の
ラッチ先生です


スックです。よろしくね!



この基礎プログラムは、こちらの記事で解説しています

学習の流れ

プログラミングの仕方を説明します
ランダムモジュールを 用意する

boonの座標を ランダムに決めるので、
まず、
ランダムモジュールを用意しよう
import pgzrun
import random #この部分を 追加する
import pgzhelper #削除する

今回のプロジェクトには、
Actor()クラスの move_forward()メゾットでboonを 動かしません
ですので、
move_forward()メゾットが 含まれている pgzhelperモジュールを
削除します。

boonをクリックすると ランダムな場所へ 移る

on_mouse_down( ) 関数で
boonをクリックしたらランダムな場所へ移る
プログラムを 作ります。

引数「pos」の 中に、
クリックした地点の座標(x, y) が 代入されるよ
def on_mouse_down(pos):
if boon.collidepoint(pos):

Actor()クラスにあるcollidepoint()メゾットを使うと
boonに クリックしたか判定してくれるよ


boonをクリックすると、
boon.collidepoint(pos)が 『True』に なります。
そうしたら、
boonを ランダムに決めた新しい場所へ 表示させるよ

boonの新しい座標(x、y)は、
Actor()クラスの 属性xと属性y に
ランダムに決めたデータを代入します
Actor()クラスは、キャラクターを作る設計図です。
6. boon = Actor(“boon“, (400, 300))
変数boonには、Actor()クラス(設計図)が 入っています。

Actor()クラスに入っている
(属性:データ)
・ x (キャラクターの x座標)
・ y (キャラクターの y座標)
・ angle(キャラクターの向き)
(メゾット:命令)
・ draw (キャラクターを 表示する)
・ angle_to(ターゲットの方へ向く角度を計算する)
属性(データ)と メゾットは 「.(ドット)」を付けて 使います

まずは、boonのx座標を 決めるよ
boon.x = random.randint(50, 750)

なぜ、boonのx座標を 50~750 にしたのか?
それは、
boon の 画像が、100 × 100 px だからです

スクリーンに boonが 入る範囲が x座標は50から750 に なります

つぎは、
boonのy座標を 決めるよ
boon.x = random.randint(50, 750)

これで、
boonがクリックされたら、ランダムに動くようになったね
boonの座標を 表示する


最後に boonの座標を スクリーンに 表示します。
screen.drawにあるtextメゾットを 使いましょう。

テキストをスクリーンに表示するから
def draw()関数の 中に プログラムを書いていくよ


”文字列”の所、
なんかf”({int(boon.x), {int(boon.y)})” と 書くみたいだけど
ややこしいなぁ…

f 文字列は、
変数のデータを 簡単に文字列に入れてくれる
pythonの便利な機能です

screen.draw.text(f"({boon.x}, {boon.y})", center=(boon.x, boon.y+70), size=70, color="blue")


変数boon.xには、『400.0』
変数boon.yには、『300.0』 と データが 入っているんだね
boonの座標(400.0, 300.0)を
int( )関数を使って、(400, 300)と 整数で 表示させます。
使い方は、簡単です。
・ int(4.5) ⇒ 4
・ int(7.08) ⇒ 7
・ int(-6.769) ⇒ -6
・ int(boon.x) ⇒ 400 int(boon.y) ⇒ 300
整数にしたい数値や 変数を ( )の中に 入れればいいだけ!
小数第1位以下を 切り捨てて、整数にしてしまう
pythonの中に入っている便利な関数です
* 『int』は、「integer(整数)」の略語です
screen.draw.text(f"({int(boon.x)}, {int(boon.y)})", center=(boon.x, boon.y+70), fontsize=70, color="blue")



これで、今回の学習は終了! おつかれさま
まとめ
今回は、
boonをクリックしたら ランダムに場所を移し、座標を表示するプログラムを
作りました


import pgzrun
import random
WIDTH = 800
HEIGHT = 590
boon = Actor("boon", (400, 300))
def draw():
screen.fill("white")
boon.draw()
screen.draw.text(f"({int(boon.x)}, {int(boon.y)})", center=(boon.x, boon.y+70), size=70, color="blue")
def on_mouse_down(pos):
if boon.collidepoint(pos):
boon.x = random.randint(50, 750)
boon.y = random.randint(50, 540)
pgzrun.go()

f 文字列の使い方が わかったな。
これは、変数のデータを 表示できる とても便利な機能なので、
覚えておくと いいよ!

はぁ~い!