前提・実現したいこと
python初心者です。
tkinterを使ってシューティングゲームを作っているのですが、ビームを何回も発射する方法とインベーダー(敵)がたくさん表れる方法が全く分からないです。
どのようなコードを書けばいいでしょうか?
とてもつたないコードだと思いますが、質問答えてくれると嬉しいです。
該当のソースコード
import tkinter as tk from PIL import Image,ImageTk import random as ra rocketX,rocketY=300,360 rocketdx=4 invaderX,invaderY=(ra.randint(0,600)),45 invaderdx=15 beamX,beamY=300,300 beamdy=-30 #ロケット def rocket_move(event=None): global rocketX,rocketY,rocketdx canvas.delete("rocket") rocketX=rocketX+rocketdx canvas.create_image(rocketX,rocketY,image=imgrct,tag="rocket") def pushLeft(event): global rocketX,rocketdx if rocketX<15: rocketdx=0 else: rocketdx=-4 root.after(20,rocket_move) def pushRight(event): global rocketX,rocketdx if rocketX>585: rocketdx=0 else: rocketdx = 4 root.after(20,rocket_move) #インベーダー def invader_move(event=None): global invaderX,invaderY,invaderdx canvas.delete("corona1") if invaderX>=canvas.winfo_width()-15 or invaderX<15: invaderdx=-invaderdx invaderY+=10 if invaderY>canvas.winfo_height()-100: root.destroy() invaderX+=invaderdx canvas.create_image(invaderX,invaderY,image=imginv,tag="corona1") root.after(20,invader_move) #ビーム def beam_move(event=None): global rocket_move,beamY,beamdy canvas.delete("beam") beamY=beamY+beamdy if beamY<=0: pass else: canvas.create_rectangle(rocketX-3,beamY-10,rocketX+3,beamY+10,fill="yellow",tag="beam") root.after(20,beam_move) def pushEnter(event): root.after(20,beam_move) root=tk.Tk() root.geometry("600x400") canvas=tk.Canvas(root,width=600,height=400,bg="black") canvas.place(x=0,y=0) root.bind("<Left>",pushLeft) root.bind("<Right>",pushRight) root.bind("<Return>",pushEnter) canvas.focus_set() imgrct = ImageTk.PhotoImage(file="rocket.png") imginv = ImageTk.PhotoImage(file="corona1.png") imgbem = ImageTk.PhotoImage(file="beam_pink.png") root.after(20,rocket_move) root.after(20,invader_move) root.mainloop()
試したこと
色々調べた見ましたが結局何もわからないままです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/11 11:53
2021/07/11 12:23
2021/07/11 14:33
2021/07/12 04:16 編集
2021/07/12 14:28
2021/07/13 03:00