Pythonアプリ(4):もぐらたたきを作ろう!
もぐらたたきを作ろう!
モグラ(テントくん)の画像を表示して、クリックすると消えて点が入るゲームを作ります。
素材
この画像を使ってください。他の画像でも構いません。
1. テントくんを表示する
from tentoapp import *
app = App()app.size(600,600)app.title = "もぐらたたき"
img = Image("warai100.png")mog = Label(app)mog.image = imgmog.place(200,200)
app.start()
ここでのポイントは2つあります。
(1) テントくんの画像をラベルに表示 画像は、ラベルを利用して表示します。
img = Image("warai100.png")
で画像のデータを読み込み、それを mog.image = img
としてラベルに割り当てます。
(2) 好きな位置にラベルを配置
今までボタンやラベルを配置するには pack()
を使っていました。 pack()
では自動的に上から配置されるので、正確な位置を指定することができませんでした。今回は、 place()
を使って座標を指定します。
mog.place(200,200)
ここでは、x座標が200(左から200)、y座標が200(上から200)の位置にラベルを表示しています。ラベルの左上の角の座標が(200,200)になります。
また、それにともなってウインドウのサイズも固定しています。
app.size(600,600)
ここでは、ウインドウの横幅を600pxに、縦幅も600pxに固定しています。
2. テントくんをランダムに動かす
from tentoapp import *from random import *
def move(): mog.place(randint(0,600), randint(0,600)) app.after(3000,move)
app = App()app.size(600,600)app.title = "もぐらたたき"
img = Image("warai100.png")mog = Label(app)mog.image = img
app.after(3000,move)app.start()
モグラを定期的に動かすには、前回のストップウォッチと同じように app.after()
を使います。また、ランダムな位置に出現させるために random
モジュールを使います。
from random import *
この行があることで randam(ランダム)モジュール の関数などを使用することができます。今回は、 randint()
関数を使います。 randint(0,5)
のように書くと0〜5の間の整数のどれか(0,1,2,3,4,5のどれか)が返されます。
画面の大きさが600x600なので、 randint(0,600)
として縦横ともに0から600のどこかに移動するようにしています。
3. たたかれたら消えるようにする
次に、テントくんをクリックしたら消えるようにします。
from tentoapp import *from random import *
def move(): mog.place(randint(0,450), randint(0,450)) app.after(3000,move)
def click(): mog.hide()
app = App()app.size(600,600)app.title = "もぐらたたき"
img = Image("warai100.png")mog = Label(app)mog.image = imgmog.onclick = click
app.after(3000,move)app.start()
def click(): mog.hide()
まず、クリックしたときに実行される関数clickを作成します。 mog.hide()
でラベルmogが隠れます。
mog.onclick = click
ここでは、ラベルmogをクリックしたときに関数clickが呼ばれるように設定しています。
4. 点数が入るようにする
テントくんをクリックしたとき点数が入るようにします。
from tentoapp import *from random import *
count = 0
def move(): mog.place(randint(0,450), randint(0,450)) app.after(3000,move)
def click(): global count mog.hide() count += 1 lb.text = "得点:" + str(count)
app = App()app.size(600,600)app.title = "もぐらたたき"
lb = Label(app)lb.text = "得点:0"lb.fontsize = 30lb.place(0,0)
img = Image("warai100.png")mog = Label(app)mog.image = imgmog.onclick = click
app.after(3000,move)app.start()
やってみよう!
1. スタートボタンで開始しよう☆
スタートボタンを作って、スタートボタンをクリックしないと始まらないようにしてください。
2. テントくんが泣くようにしよう☆
テントくんの泣き顔画像を使って、クリックされたら泣くようにしよう。
3. テントくん以外のキャラクターを出そう☆☆
テントくん以外のキャラクターも出してください。点数を変えるといいですね。
4. 出現するスピードを変えよう☆☆
点数が増えるとテントくんの出現スピードが速くなるようにしよう。
5. テントくんが同時にたくさん出るようにしよう☆☆☆(難問)
いまはテントくんが同時に一匹しか出ませんが、同時に何匹も出るようにしよう