前提・実現したいこと
python(pygame)を使って、ドライブゲームのようなものを作ろうとしています。
今は、pygame.draw.lineを用いて車が走る道を描こうとしています。
その中でstとenの2点を定義しなくてはならず、(x座標、y座標)のそれぞれをリストを用いて決めています。
ソースコード中のxsがx座標、ysがy座標です。
道はランダムでいろいろな角度のものを作りたいと思っているので、x座標はランダムな数値を入れています。
発生している問題・エラーメッセージ
まず、2つのリスト中の14個の数値すべてを座標として結合?する方法がわかりません。また、それをループさせる方法がわかりません。
例)
仮に
xs [96, 70, 92, 113]
ys [400, 350, 300, 250]
としたときに
st[(70,350),(92,300),(113,250)]
en[(96,400),(70,350),(92,300)]
となり、3つのLineが引けて、じぐさぐの1本の直線が生成されてほしいです。
以下のソースコードは書いてみたものの、
while文中のdefの部分がうまくいきません。
ご意見をいただけたら嬉しいです
よろしくお願いいたします。
エラーメッセージ
該当のソースコード
python
1import pygame 2from pygame.locals import * 3import sys 4import time 5import datetime as dt 6import random 7import numpy as np 8 9BLACK = (0, 0, 0) 10WHITE = (255, 255, 255) 11 12pygame.init() #初期化 13screen = pygame.display.set_mode((640, 500)) #画面サイズ 14myclock = pygame.time.Clock() 15myclock.tick(30) 16pygame.display.flip() 17 18xs = [random.randint(0,590)] #Lineの各点のx座標 19for i in range(14): 20 xs.append( 21 random.randint(max(0, xs[-1]-50), min(590, xs[-1]+50)) 22 ) 23 24ys=[450] #Lineの各点のy座標(前半) 25for i in range(14): 26 ys1.append(ys1[-1]-50) 27 28 29while True: 30 time.sleep(0.1) 31 screen.fill(BLACK) 32 def trytype(i,n): 33 st=(xs[+1],ys[+1]) 34 en=(xs[+0],ys[+0]) 35 n=n+1 36 return n 37 pygame.draw.line (screen, WHITE, st, en) 38 pygame.display.update() 39 for event in pygame.event.get(): 40 if event.type==pygame.QUIT: 41 pygame.quit() 42 sys.exit() 43 pressed_key=pygame.key.get_pressed() 44 if pressed_key[K_ESCAPE]: 45 pygame.quit() 46 sys.exit() 47 if time.time()-start>120: 48 pygame.quit() 49 sys.exit() 50
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/24 04:47