さめがめをPygameで作る
お前、最近本ばっかり読んでてプログラミングしてないんじゃないの?とか、そろそろ周りから突っ込まれそうな気がしたので、さめがめを適当にPythonで作りました。
理由としてはクラスで、さめがめ作るのが流行ってるから(ようするにただの負けず嫌い)。
Javaで作った人がいるのを皮切りに、.net(VBかC#かどっちか)で作った人も。.netの人は授業中にサボって2時間ぐらいで作ったらしいけど、こっちはのんびり電気回路の宿題やりながら一日かけてやりました。
以下、突っ込みどころ満載な雑なソースです。boardモジュールがミソなのですが、あまりにソースが汚いので、リファクタして、後日載せます。
# -*- coding:utf-8 -*- import sys import pygame from pygame.locals import * from board import * NUM_COL = 20 NUM_ROW = 15 SIZE = 30 SCREEN_SIZE = (NUM_COL*SIZE,NUM_ROW*SIZE) WHITE = (255, 255, 255) RED = (241, 91, 91) BRUE = (0, 125, 197) GREEN = (0, 128, 0) YELLOW = (255, 212, 0) COLOR = [WHITE, RED, BRUE, GREEN, YELLOW] def main(): pygame.init() screen = pygame.display.set_mode(SCREEN_SIZE) pygame.display.set_caption(u"さめがめ") sg = SameGameBoard(NUM_COL, NUM_ROW, len(COLOR)) while True: draw_board(screen, sg.content) pygame.display.update() for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() if event.type == MOUSEBUTTONDOWN and event.button == 1: px, py = event.pos sg.update_board(px/SIZE, py/SIZE) def draw_board(screen, board): pygame.draw.rect(screen, (50,50,50), Rect(0, 0, SCREEN_SIZE[0], SCREEN_SIZE[1])) for i in xrange(NUM_ROW): offset = i * NUM_COL for j in xrange(NUM_COL): if board[offset+j] > 0: pygame.draw.rect(screen, COLOR[board[offset+j]-1], Rect(j*SIZE,i*SIZE,SIZE,SIZE)) pygame.draw.rect(screen, (50,50,50), Rect(j*SIZE,i*SIZE,SIZE,SIZE), 1) # grid if __name__=='__main__': main()