(Python+Pygame)スロットマシン(その2)


アニメ『バジリスク~甲賀忍法帖~』(2005)
桜花とほぼ同時に見進めようと思ってましたが、予想以上に面白いので、こちらを最後まで見てから桜花忍法帖に進むことにします。忍の技が人間離れというか妖怪っぽいです。他の忍者アニメでも、似たような忍術出てくるので慣れてるはずなんですが、地虫十兵衛にはど肝を抜かれました。なんであんなに早く動けるのでしょうか。

前回に続いてスロットです。 今回はスロットを3列にします。絵柄もベルの他に以下の4枚を増やします。




スクリプトです。

takk@deb9:~$ cat -n slot2.py
     1  import pygame,sys,os
     2  from pygame.locals import *
     3
     4  SLOTX,SLOTY = 3,5
     5  PICTSIZE = 128
     6
     7  class Slot:
     8    def __init__(self,pos):
     9      self.mapdata = [[0,1,1],
    10                      [1,2,2],
    11                      [0,2,1],
    12                      [3,2,2],
    13                      [2,0,2],
    14                      [1,3,3],
    15                      [0,0,2],
    16                      [1,0,2],
    17                      [1,2,1],
    18                      [0,4,2],
    19                      [4,1,4],
    20                      [4,3,1],
    21                      [3,3,4]]
    22      self.image=[]
    23      self.image.append( pygame.image.load("bell.png"))
    24      self.image.append( pygame.image.load("apple.png"))
    25      self.image.append( pygame.image.load("bag.png"))
    26      self.image.append( pygame.image.load("eggplant.png"))
    27      self.image.append( pygame.image.load("cherry.png"))
    28      self.rect = pygame.Rect(pos, self.image[0].get_size() )
    29      self.pos = pos
    30
    31    def draw(self,screen,s):
    32      for y in range(0,SLOTY+1):
    33        for x in range(0,SLOTX):
    34          yy = (y + (s[x]/PICTSIZE)) % 12
    35          thisimage = self.image[self.mapdata[yy][x]]
    36          screen.blit(thisimage, (x*PICTSIZE,((SLOTY-y-1)*PICTSIZE)+(s[x]%PICTSIZE)))
    37
    38  pygame.init()
    39  screen = pygame.display.set_mode((PICTSIZE*SLOTX,PICTSIZE*SLOTY))
    40  pygame.display.set_caption("SLOT")
    41
    42  map = Slot((0,0))
    43
    44  clk = pygame.time.Clock()
    45  pos_y=0
    46  p1=0
    47  p2=0
    48  p3=0
    49  key_status = 0
    50  while 1:
    51    clk.tick(1000)
    52    if key_status > 0: key_status-=1
    53    key = pygame.key.get_pressed()
    54
    55    for e in pygame.event.get():
    56      if e.type==QUIT:
    57        sys.exit()
    58      if e.type==KEYUP:
    59        key_status=0
    60
    61    map.draw(screen,[p1,p2,p3])
    62
    63    speed=16
    64    pos_y+=speed
    65    p1+=32
    66    p2+=20
    67    p3+=16
    68
    69    pygame.display.flip()
    70
takk@deb9:~$

ぐるぐる回ります。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA