質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
86.12%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

解決済

python gameのstart

IshiKen
IshiKen

総合スコア5

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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

1回答

0リアクション

0クリップ

298閲覧

投稿2022/09/05 07:58

編集2022/09/05 08:52

前提

pythonのtkinterモジュールの勉強で簡単なゲームを作っています。
その際に、マウスの左クリックをしたらゲームがスタートする機能を追加しようとコードを書いたのですが、それが反映されません。
また、動いているのですが、エラーが表示されています。

実現したいこと

ゲームをスタートをする機能を追加したいです。
エラーをなくしたい。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "C:\Users\ishii\OneDrive\デスクトップ\python\pythonではじめよう\第13章.py", line 73, in <module> ball.draw() File "C:\Users\ishii\OneDrive\デスクトップ\python\pythonではじめよう\第13章.py", line 24, in draw self.canvas.move(self.id,self.x,self.y) File "C:\Users\ishii\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 2585, in move self.tk.call((self._w, 'move') + args) _tkinter.TclError: invalid command name ".!canvas"

該当のソースコード

python

from tkinter import* import random import time class Ball: def __init__(self,canvas,paddle,color): self.canvas = canvas self.paddle = paddle self.id = canvas.create_oval(10,10,25,25,fill=color) self.canvas.move(self.id,245,100) starts = [-3,-2,-1,1,2,3] random.shuffle(starts) self.x=starts[0] self.y=-3 self.canvas_height=self.canvas.winfo_height() self.canvas_width=self.canvas.winfo_width() self.hit_bottom = False def hit_paddle(self,pos): paddle_pos = self.canvas.coords(self.paddle.id) if pos[2]>=paddle_pos[0] and pos[0]<=paddle_pos[2]: if pos[3]>=paddle_pos[1] and pos[3]<=paddle_pos[3]: return True return False def draw(self): self.canvas.move(self.id,self.x,self.y) pos = self.canvas.coords(self.id) if pos[1]<=0: self.y=3 if pos[3]>=self.canvas_height: self.hit_bottom = True if self.hit_paddle(pos) == True: self.y =-3 if pos[0]<=0: self.x = 3 if pos[2]>= self.canvas_width: self.x =-3 class Paddle: def __init__(self,canvas,color): self.canvas = canvas self.id = canvas.create_rectangle(0,0,100,10,fill=color) self.canvas.move(self.id,200,300) self.x = 0 self.canvas_width = self.canvas.winfo_width() self.started = False self.canvas.bind_all('<KeyPress-Left>',self.turn_left) self.canvas.bind_all('<KeyPress-Right>',self.turn_right) self.canvas.bind_all('<Button-1>',self.start_game) def turn_left(self,evt): self.x =-2 def turn_right(self,evl): self.x = 2 def start_game(self,evt): self.started = True def draw(self): self.canvas.move(self.id,self.x,0) pos = self.canvas.coords(self.id) if pos[0]<= 0: self.x = 0 elif pos[2]>=self.canvas_width: self.x =0 tk=Tk() tk.title("Game") tk.resizable(0,0) tk.wm_attributes("-topmost",1) canvas = Canvas(tk,width=500,height=400,bd=0,highlightthickness=0) canvas.pack() tk.update() paddle = Paddle(canvas,'blue') ball = Ball(canvas,paddle,'red') while True: if ball.hit_bottom == False and paddle.started == True: ball.draw() paddle.draw() ball.draw() paddle.draw() tk.update_idletasks() tk.update() time.sleep(0.01)

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

TakaiY

2022/09/05 08:44

エラーメッセージはそこだけでなく、全て載せていただけますか。 また、質問はエラーメッセージのこと以外にもあるようですが、「gameをスタートする機能を作りたかったのですがコードを書いてもゲームの仕様が変わりません。」では何が知りたいのかわかりません。

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

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