🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

373閲覧

エラーが出て大変です!

Tofu33

総合スコア4

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1グッド

2クリップ

投稿2019/11/27 07:25

import tkinter as tk
import numpy as np

class Circle():
def init(self,canvas,x,y,r,color,tag=None):
self.canvas = canvas
self.x = x #円の中心のx座標
self.y = y #円の中心のy座標
self.r = r #円の半径
self.color = color
self.tag = tag

def createCircle(self): self.canvas.create_oval(self.x-self.r,self.y-self.r,self.x+self.r,self.y+self.r,fill=self.color,tag=self.tag)

class Application(tk.Frame):
def init(self,master):
super().init(master)
self.pack()

self.width=self.height=500 master.geometry(str(self.width)+"x"+str(self.height)) master.title("追いかけっこゲーム") self.canvas = tk.Canvas(master,width=self.width,height=self.height,bg="black") self.canvas.pack() self.player = Circle(self.canvas,250,250,30,"red","player") #インスタンスplayerの生成 self.enemy = Circle(self.canvas,0,0,30,"blue","enemy") #インスタンスenemyの生成 self.canvas.bind("<Motion>",self.mouseEvent) self.master.after(50,self.update) def update(self): if self.judgeflag(self.player,self.enemy): eV = self.enemyVec(self.player,self.enemy,10) self.enemy.x += eV[0] self.enemy.y += eV[1] self.canvas.delete("player") self.canvas.delete("enemy") self.player.createCircle() self.enemy.createCircle() self.master.after(50,self.update) def enemyVec(self,player,enemy,speed): #敵の動き(x,y)のベクトルを返す rad=np.arctan((player.y-enemy.y)/(player.x-enemy.x)) #向き(角度の計算) if player.x-enemy.x >= 0: vx=np.cos(rad)*speed vy=np.sin(rad)*speed else: vx=np.cos(rad)*(-1*speed) vy=np.sin(rad)*(-1*speed) return [vx,vy] def judgeflag(self,player,enemy): #当たり判定 if np.sqrt((player.x-enemy.x)**2+(player.y-enemy.y)**2) > player.r+enemy.r: return True else: return False def mouseEvent(self,event): self.player.x = event.x self.player.y = event.y

def main():
win = tk.Tk()
app = Application(master=win)
app.mainloop()

if name == "main":
main()

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/28 05:48 編集

どうして低評価がいっぱい押されるのかご教授いたします。 2つアドバイスを言ってからここ抜けます。 ・『エラーが出て大変です!』って質問してて、質問内容見たらエラー内容が何も書いていないというのはおかしいですね。下の方のようにお疲れ!としか言いようがないです・・しっかりエラー内容を書きましょう!(上から目線ですみません。) ・https://teratail.com/help/question-tips ↑これを見てから質問しましょう!(これも上から目線ですみません。) 質問を編集してもらえればいいと思います。よろしくお願いします。 私はこれで抜けるので、返信はいらないです。むしろしなくていいです。 では( ^_^)/~~~
guest

回答1

0

大変ですね!お疲れ様です!!

投稿2019/11/27 07:53

tatamyiwathy

総合スコア1045

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問