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

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

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

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

Q&A

解決済

1回答

3898閲覧

円を動かすアニメーションを作りたい。

nekodoro

総合スコア2

Python

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

0グッド

0クリップ

投稿2020/07/10 09:16

編集2020/07/15 09:18

円を動かすアニメーションを作りたいのですが、できないです。
四角形を動かすアニメーションはできました
四角形のアニメーションと円を動かすアニメーションを二つ同じ画面で作りたいです
これを応用してどのようにすればできるでしょうか
グリッド線を下から上へ行くような円のアニメーションがいいです。

BitArrowというサイトでプログラミングを行っているのですが、
そこのpythonのグラフィックスライブラリがimport gとなっています。
BitArrow pythonと検索すれば出てくると思います。

インデントの修正をしました。

python

1import g 2class Point: 3 def __init__(self,x,y): 4 self.x=x 5 self.y=y 6 def __str__(self): 7 return "Point({},{})".format(self.x,self.y) 8 def move(self, dx,dy): 9 self.x+=dx 10 self.y+=dy 11 def draw(self): 12 g.fillOval(self.x-5, self.y-5,10,10) 13class Shape: 14 def move(self,dx,dy): 15 self.o.move(dx,dy) 16class Rectangle(Shape): 17 def __init__(self, o, width, height): 18 self.o=o 19 self.width=width 20 self.height=height 21 def draw(self): 22 g.fillRect(self.o.x, self.o.y, self.width, self.height) 23g.drawGrid() 24def move(): 25 global r1 26 global r2 27 g.clear() 28 r1.draw() 29 r2.draw() 30 r1.move(10,10) 31 r2.move(0,-10) 32 g.setTimeout(move,100) 33r1=Rectangle(Point(20,50),50,50) 34r2=Rectangle(Point(120,150),50,50) 35move() 36g.wait() 37

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

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

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

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

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

aokikenichi

2020/07/10 10:16

インデントが崩れてます ```Python コード ``` で例示をお願い致します
hope_mucci

2020/07/10 10:51

コードは<code>ボタンを使ってシンタックスハイライトしてください。 以下のヘルプを読んでコード部分を編集しなおしてください。 https://teratail.com/help/question-tips#questionTips3-5 特にPythonはインデント命なのでインデントが崩されるとこちらでテストできません。 プレビューもちゃんと確認してね。
hope_mucci

2020/07/10 10:59

あと、gというライブラリをimportしているようですが、これは一体どういうものでしょうか? 標準では入っていないものだと思います。説明をお願いします。
nekodoro

2020/07/15 08:27

BitAllowというサイトでプログラミングを行っているのですが、 そこのpythonのグラフィックスライブラリがimport gとなっています。 BitAllow pythonと検索すれば出てくると思います。
hope_mucci

2020/07/15 08:43

BitAllow python で検索しましたが、怪しげなサイトしか検索されません。 本当に上記の検索ワードで正しいですか?
nekodoro

2020/07/15 08:48

はい。あっています
nekodoro

2020/07/15 09:00

あ、すみません。。 ありがとうございます。
aokikenichi

2020/07/15 09:05

質問内容を修正なさった方が正しい回答が得られる可能性が高まるかと思います。 また、インデントなしのコードの方は不要かと思いますので削除なさってください。
hope_mucci

2020/07/15 09:11

rとlが間違っている、ということです。 こういった思い込みは良くないですよ。デバッグでも大きく影響します。
aokikenichi

2020/07/15 09:13

例示いただいたコードで動きますか? 私が現在試したところ 7行目 def __str__(self): で Error: 文法エラー at null:null:null) が出てしまいます。Bit Arrowのブラウザ版で動かしてますので環境に違いはないと思います。
nekodoro

2020/07/15 09:19

一応もう一回試しましたが動きました。 そのコードを張りなおして一応訂正しました。 ブラウザーで実行して出ました。
hope_mucci

2020/07/15 13:23

def __str__(self): があると文法エラーとなり動作しないですね。 def __proto__(self): でも同様に文法エラーとなるので、javascirptの予約語が引っかかる? なお、chrome(edge)とfirefoxでエラーメッセージが違うのでブラウザ依存の何かが原因でしょう。 safariだと動作するのでしょうか。 まあ、__str__を消せばいいのであまり問題ではないですけど。
guest

回答1

0

ベストアンサー

以下のような指針で円の描画を追加すると良いでしょう。

指針

  • 四角形を描画し、動かすプログラムはできているので、今度はそれをそのまま円に転用します。
  • まずは四角形のクラスをそのまま修正し、円を描画するように改造してみましょう。
  • 元の四角形描画クラスのfillRectfillOvalに変更すれば円が描画できます。
  • 図形の初期位置は、グラフの左上が原点で、下の端(Y軸)が500なので、(50,450)あたりから始めると良いでしょう。
  • 四角形ではr1.move(10,10)右下へ向けて動いていました。

X座標を正方向に動かすと右へ、負方法へ動かすと左へ動きます。
Y座標は正方向に動かすと下へ、負方向へ動かすと上へ動きます。
今度は左下から右上に動かしたいということで、Xは正の値、Yは負の値をmoveで加算していけば右上に動きます。

  • ここまで出来たら、Rectangleと同じように円のクラス(名前は何でもよいがOvalが適当か)をRectangleと同様に作成します。
  • r1にRectangleクラスのオブジェクトを作成していましたが、今度はr2にOvalクラスのオブジェクトを作成してみましょう。そして、move関数内でr1と同様にdrawmoveを行えば四角形と円が同時に描画できます。

投稿2020/07/15 09:21

hope_mucci

総合スコア4447

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

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

nekodoro

2020/07/15 13:33

おかげさまでできました! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問