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

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

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

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

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

Q&A

解決済

1回答

634閲覧

python pygame フットステップ錯視

sakazuki0111

総合スコア7

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python

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

0グッド

0クリップ

投稿2019/12/16 10:14

編集2019/12/18 02:17

前提・実現したいこと

pythonのpygameでフットステップ錯視を作ろうとしていて、現在移動する箱1つを書く途中です。下記のコードを書いたのですが実行すると黒線が現れずに移動する赤の箱だけが写ります。21行目のscreen.fill(WHITE)の文を消すと黒の箱は描かれますが、赤の箱は綺麗に描かれません。どのように書けばいいのでしょうか。教えてください。

該当のソースコード

python

1import pygame 2 3# Define some colors 4BLACK = (0, 0, 0) 5WHITE = (255, 255, 255) 6GREEN = (0, 255, 0) 7RED = (255, 0, 0) 8 9pygame.init() 10size=(1000,500) 11rect_x=50 12rect_y=50 13rect_change_x=0.1 14screen=pygame.display.set_mode(size) 15pygame.display.set_caption("はじめてのPygame") 16screen.fill(WHITE) 17for i in range(1,1000,100): 18 19 pygame.draw.polygon(screen, BLACK, [[100+i,50], [150+i,50], [150+i,450],[100+i,450]], 0) 20 pygame.display.flip() 21for j in range(10000): 22 screen.fill(WHITE) 23 pygame.draw.rect(screen, RED, [rect_x, rect_y,100,50]) 24 pygame.display.flip() 25 rect_x += rect_change_x 26pygame.display.flip() 27pygame.time.delay(5) 28 29pygame.quit()

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

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

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

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

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

shiracamus

2019/12/16 10:21

コードをcodeタグで囲いましょう。
sakazuki0111

2019/12/16 10:24

すみません。python初心者であることとここで質問することが初めてなものでcodeタグとはどのようにすればよいのでしょうか。すみません。
shiracamus

2019/12/16 10:39

コード範囲を選択して <code> をクリック。言語に python を指定してください。 インデントが正しく表示されます。
tatamyiwathy

2019/12/16 11:07

for j in range(10000): のインデントが変じゃないですか?
sakazuki0111

2019/12/16 11:29

スマホから質問していたので気づきませんでした。ありがとうございます。for i ~の中にfor j~を入れてて実行してみましたが、変化はありませんでした。
tatamyiwathy

2019/12/17 02:15 編集

あ、いえfor j in range(10000):ループに入る命令文がどこまでなのかがわからないということです。 for j in range(10000): screen.fill(WHITE) pygame.draw.rect(screen, RED, [rect_x, rect_y,100,50]) pygame.display.flip() rect_x += rect_change_x ですかね?
sakazuki0111

2019/12/17 14:57

はい、rect_x += rect_change_xまでがループ内にあります、インデントが治っていませんでした。本当にすみませんでした。
sakazuki0111

2019/12/17 15:07

インデントが正しく表示されているPythonからコピーして貼り付けたり、スペースキーで分かりやすくしようと試みたのですが更新して、再度見ても変化なしでした。てらている自体使い慣れていないので何か間違えているのかもしれませんが今のところその原因はわかっておりません。大変申し訳ございません。
sakazuki0111

2019/12/17 15:08

知恵袋で同様な質問をしたのですが私のコードのどこが間違いなのかという回答が得られていないのでここが本当に頼りです。よろしくお願いします。
tatamyiwathy

2019/12/18 01:25

でしたら、まず掲載されているソースコードを正しく見えるように修正すると良いとおもいます。ソースが正しく読み取れないと回答できないこともありますから。
guest

回答1

0

ベストアンサー

pygameのことはあまり知りませんのであてずっぽうで回答します。

おそらく質問者さまのやりたいことはこうではないかと思いますがいかがでしょうか

# 16行目まで省略 for j in range(10000): #画面全体を白くする screen.fill(WHITE) # 黒のストライプの描画 for i in range(1,1000,100): pygame.draw.polygon(screen, BLACK, [[100+i,50], [150+i,50], [150+i,450],[100+i,450]], 0) #赤い矩形の描画 pygame.draw.rect(screen, RED, [rect_x, rect_y,100,50]) #赤い矩形の移動 rect_x += rect_change_x #画面描画 pygame.display.flip() #待機 pygame.time.delay(5)

投稿2019/12/18 01:35

tatamyiwathy

総合スコア1039

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

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

sakazuki0111

2019/12/21 03:27

完成させることが出来ました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問