を組み合わせて、リストの追加削除と三角関数、乱数などとセットしてみたら
実はビッグバンは、たまに起こっていて、宇宙は実は球ではなく、弧のように広がっている説
を唱えてみたくなったので唱えてみます
広がる計算は別のゲームで作ってみた関数で実際にはどのような動きをするのか
検証してみるための基礎として久しぶりにpygameを使って箱を書いてみました
最初、ドットの登場する場所を画面中央にそろえて
一番広がるようにしてみるとそのまま
中央から円状に広がります
次に一定の間隔で中央に再度作るとどうなるかやってみました
同じように円状に広がります
今度は中央の出現箇所をランダムにしてみると
円弧のように広がるパターンが発生しています
しばらく見ていて
平行宇宙で複数ビックバンが起きているのではなくて
同じ宇宙でビッグバンはたまに起こっていて、直近のビッグバンのこの宇宙は実は球ではなく、
弧のように広がっているのではないかと思った次第であります
たま = だいたい300億年に1度
import pygame
from pygame.locals import *
import random
import math
screen = pygame.display.set_mode((600, 400))
def open_score(lx, ly):
count = len(lx)
score = 0
for i in range(count):
for j in range(i+1, count):
score += ((lx[i]-lx[j]) ** 2 + (ly[i]-ly[j]) ** 2)**0.5
return score
def main():
turn = 0
dot_x = []
dot_y = []
dot_count = 10
round_x = []
round_y = []
for i in range(12):
rd = math.radians(i*30)
round_x += [math.sin(rd)*3]
round_y += [math.cos(rd)*3]
for i in range(dot_count):
dot_x += [300]
dot_y += [200]
while 1:
turn += 1
screen.fill((0,0,0))
for x,y in zip(dot_x, dot_y):
pygame.draw.rect(screen, Color('red'), Rect(x, y, 5, 5))
for r in range(dot_count):
best_score = open_score(dot_x, dot_y)
for rx, ry in zip(round_x, round_y):
bx, by = dot_x[r], dot_y[r]
dot_x[r] += rx
dot_y[r] += ry
score = open_score(dot_x, dot_y)
if best_score < score:
best_score = score
else:
dot_x[r], dot_y[r] = bx, by
if turn % 5 == 4:
rx = random.randint(0,100)+250
ry = random.randint(0,100)+150
for i in range(10):
dot_x += [rx]
dot_y += [ry]
dot_count += 10
print(dot_count)
for i in range(dot_count-1, -1, -1):
if dot_x[i] < 0 or dot_x[i] > 600 or dot_y[i] < 0 or dot_y[i] > 400:
del dot_x[i]
del dot_y[i]
dot_count -= 1
pygame.display.update()
pygame.time.wait(50)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
pygame.init()
main()