以前作成した迷路を作成するプログラムを移植してみました。
移植は作成部分だけです。
作成過程を表示させるために画面表示を作成段階にしています。
かなり無駄な作成方法なのですが一瞬で作ってしまいます。
<参考>
フラッシュ迷路の作成
bg.png
移植は作成部分だけです。
作成過程を表示させるために画面表示を作成段階にしています。
かなり無駄な作成方法なのですが一瞬で作ってしまいます。
<参考>
フラッシュ迷路の作成
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()