パーソナルブログメモリ

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

pythonゲームコーディング14時間目 迷路を掘ってみる

2017-08-31 | pygame
以前作成した迷路を作成するプログラムを移植してみました。
移植は作成部分だけです。
作成過程を表示させるために画面表示を作成段階にしています。
かなり無駄な作成方法なのですが一瞬で作ってしまいます。

<参考>
フラッシュ迷路の作成

bg.png


#!/usr/bin/python
# -*- coding: utf-8 -*-
import pygame
from pygame.locals import *
import random
import numpy as np

pygame.init()
window_size = (1200, 1200)
clock = pygame.time.Clock()
screen = pygame.display.set_mode(window_size)
img_char = pygame.image.load('bg.png')

spimg = []

sizex = 61
sizey = 61
sizexy = sizex * sizey
mz = np.array([0 for y in range(sizexy)])
gx = sizex-2
gy = sizey-2

def rnd(n):
    return random.randrange(0, n)

def mazeedit():
    for n in range(sizexy):
        mz[n] = 1
    mz[1+1*sizex]=0
    while mz[gx + gy * sizex] == 1:
        for n in range(3000):
            x = rnd((sizex-1)/2) * 2 + 1
            y = rnd((sizey-1)/2) * 2 + 1
            if mz[x + y * sizex] == 0:
                dig(x, y, 8)

def dig(x, y, t):
    t -= 1
    if t == 0:
        return
    dx=rnd(3)-1
    dy=rnd(3)-1
    if dx*dy!=0:
        return
    x1=x+dx*2
    y1=y+dy*2
    if (x1<1 or x1>gx or y1<1 or y1>gy):
        return
    if (mz[x1+y1*sizex]==0):
        return
    mz[x+dx+(y+dy)*sizex]=0
    mz[x1+y1*sizex]=0
    mazewrite()
    dig(x1, y1, t)

def mazewrite():
    bg_color = (0, 0, 0)
    screen.fill(bg_color)
    for x in range(sizex):
        for y in range(sizey):
            if mz[x+y*sizex]==1:
                spwrite(2,x*16,y*16,0,1)
    pygame.display.flip()

def spset():
    for y in range(10):
        for x in range(10):
            temp = pygame.Surface((16, 16), pygame.SRCALPHA)
            temp.blit(img_char, (0, 0), (x * 16, y * 16, 16, 16))
            spimg.append(temp)

def spwrite(cn, x, y, angle, scale):
    temp = pygame.transform.rotozoom(spimg[cn], angle, scale)
    screen.blit(temp, (x, y))

def main():
    spset()
    mazeedit()
    end_game = False
    while not end_game:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                end_game = True
    pygame.quit()
    quit()

main()




最新の画像もっと見る

コメントを投稿

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