パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

実はビッグバンは、たまに起こっていて、宇宙は実は球ではなく、弧のように広がっている説

2020-12-11 | pygame

直近の広がりを計算する関数pygameで箱を書く

を組み合わせて、リストの追加削除と三角関数、乱数などとセットしてみたら

実はビッグバンは、たまに起こっていて、宇宙は実は球ではなく、弧のように広がっている説

を唱えてみたくなったので唱えてみます

 

広がる計算は別のゲームで作ってみた関数で実際にはどのような動きをするのか

検証してみるための基礎として久しぶりに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()


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。