2016-09-12 19 views
0

このコードはもともとはユーザーの入力用ですが、手動でポイントを手動で選択するのではなく、ランダムにポリゴンを作成する必要があります。
私はたぶんwhileループではなくforループにするでしょうから、言及する必要はありません。ランダム座標ジェネレーターの作成

import pygame 
from pygame.locals import * 
from sys import exit 
import random 
from random import * 

pygame.init() 
screen = pygame.display.set_mode((640, 480), 0, 32) 
points = [] 


while True: 

    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      exit() 
     point1 = randint(0,639) 
     point2 = randint(0,479) 
     points = (str(randint(0,639)), str(randint(0,479))) 

    screen.fill((255,255,255)) 

     if len(points) >= 3: 
      pygame.draw.polygon(screen, (0,255,0), points) 
     for point in points: 
      pygame.draw.circle(screen, (0,0,255), point, 5) 

      pygame.display.update() 

私がしようとしているのは、座標点ランダマイザーを作ることです。
ただし、何らかの理由でこのコードと互換性がありません。私は他のこともやってみましたが、その試みの残りは目に見えるかもしれません。
変更されたセグメントはfor event in pygame.event.getからscreen.fill((255,255,255))になります。
元のコードは、このようなものだった:

while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
     pygame.quit() 
     exit() 

    if event.type == MOUSEBUTTONDOWN: 
     points.append(event.pos) 

    screen.fill((255,255,255)) 

私はプログラムを実行すると、私は

Traceback (most recent call last): 
    File "H:/Documents/it/Python/manual_box drawer.py", line 26, in <module> 
    pygame.draw.circle(screen, (0,0,255), point, 5) 
TypeError: must be 2-item sequence, not int 

エラーレポートを取得します。

+0

'point'は' int'であり、 '2-item sequence'ではありません...何が混乱していますか? –

+0

これははっきりとしていますが、(深刻なノービスのために)私は2つのアイテムシーケンスを作る方法を完全に理解していません。おそらく読んで何かを逃した。 – Ben

+1

ポイントインポイントが実際に何をしているのか考えてみてください。リストを反復する。 –

答えて

0

私はこの

points = (str(randint(0,639)), str(randint(0,479))) 

は(余分なコンマがタプルを作る)ので、のように書かれるべきだと思います。変数を再割り当てするのではなく、pointsリストに追加する必要があります。

points.append((point1, point2,)) 

次にあなたがpointsをループすることができますし、すでにやろうとしているようにそれらを描きます。

+0

あなたの 'for point in points:'の提案とは別に、あなたの提案を実装して動作しています。 – Ben

+0

リスト全体を反復してすべての点を描画する必要はありませんか? –

関連する問題