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

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

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

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

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

Q&A

解決済

1回答

1231閲覧

二重ループの使い方、ブロック配置

teslabee

総合スコア2

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

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

0グッド

0クリップ

投稿2021/11/26 04:45

二重ループを用いて8×4のブロック配置をしたいのですがうまくできないです。

コード

import

1import pygame 2from pygame.locals import QUIT 3from pygame.locals import Rect 4pygame.init() 5SURFACE = pygame.display.set_mode((400,300)) 6pygame.display.set_caption("Game Window") 7class Block: 8 def __init__(self, color, rect): 9 self.color = color 10 self.rect = rect 11 def draw(self): 12 pygame.draw.rect(SURFACE, self.color, self.rect) 13left=6 14top=30 15width=45 16height=20 17color=(200, 50, 200) 18blocks = [] 19for j in range(2): 20 for i in range(8): 21 rect = Rect(left, top, width, height) 22 blocks.append(Block(color, rect)) 23 left += 49 24while True: 25 SURFACE.fill((0,0,0)) 26 for event in pygame.event.get(): 27 if event.type == QUIT: 28 pygame.quit() 29 sys.exit() 30 for block in blocks: 31 block.draw() 32 pygame.display.update()

エラーメッセージ

### 該当のソースコード ```ここに言語名を入力 ソースコード

試したこと

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

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

どのようにブロックを配置したいのかわかりませんが、すべてのブロックに同じleft と top を設定しているのが原因でしょう。

python

1left=6 2top=30 3width=45 4height=20 5color=(200, 50, 200) 6blocks = [] 7for j in range(2): 8 for i in range(8): 9 rect = Rect(left, top, width, height) 10 blocks.append(Block(color, rect)) 11 left += 49

left と top の値は、 i と j の値によって変更される必要があるんじゃないかと思います。
たとえばこんな感じ。、

python

1for j in range(2): 2 button_top = top + (height + 2) * j 3 for i in range(8): 4 button_left = left + (width + 2) * i 5 rect = Rect(button_left, button_top, width, height) 6 blocks.append(Block(color, rect)) 7 left += 49

投稿2021/11/26 06:14

編集2021/11/27 09:53
TakaiY

総合スコア13792

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

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

teslabee

2021/11/27 02:17

Traceback (most recent call last): File "j11_kadai2.py", line 21, in <module> button_top = top + (height + 2) * i NameError: name 'i' is not defined こういうエラーが出てきました。
TakaiY

2021/11/27 09:53

i と j が逆でしたね。 直しました。
teslabee

2021/12/03 04:03

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問