编写类满天星游戏,目前自己设定需要用到的算法内容,包括第一点点击某一个图标后,自动检查图标上下左右是有与之相同的图形,如果包括自身在内有三个以上的图形,则可以消除
编写类满天星游戏,目前自己设定需要用到的算法内容,包括第一点点击某一个图标后,自动检查图标上下左右是有与之相同的图形,如果包括自身在内有三个以上的图形,则可以消除。第二,当界面中有图形消除后,那么需要根据列来下移图标,同时产生新的图标。第三,自动检查界面中是否还有能够匹配的图案,如果没有,那么重新生成游戏。第四,游戏机制设定为倒计时,在倒计时完成前,尽可能多消除,多得分。并且考虑每次消除4个以上,按比例增加时间。
首先完成最简单的部分,配置pygame的基本参数,并且绘制游戏界面,也就是画横纵线。
考虑把游戏界面画成一个10*10的方格,并且在上方留出空位显示等分等信息,具体还需不需要别的,待定…
直接使用之前贪食蛇的画格子和初始化的代码,先略作修改。
import random import time import pygame # 30帧 fps = 30 fps_clock = pygame.time.Clock() screen_width = 1024 screen_height = 768 # 分辨率,标题 display = pygame.display.set_mode((screen_width, screen_height), 0, 32) pygame.display.set_caption('好似满天星') tile_size = 60 tile_width = 60 tile_height = 60 x_margin = 400 y_margin = 100 # 列 columns = 10 # 行 rows = 11 # 配色RGB white = (255, 255, 255) black = 'black' bg_color = 'sky blue' border_color = white body_color = 'purple' inter_body_color = 'green' line_color = white directions = ['up', 'down', 'left', 'right'] text_color = (144, 59, 28) my_score = 0 snake = [] # 画格子 def draw_chest(): for i in range(rows + 1): pygame.draw.line(display, border_color, (x_margin/2, y_margin/2 + i * tile_size), (x_margin/2 + (columns * tile_size), y_margin/2 + i * tile_size), 2) for j in range(columns + 1): pygame.draw.line(display, border_color, (x_margin/2 + j * tile_size, y_margin/2), (x_margin/2 + j * tile_size, y_margin/2 + (rows * tile_size)), 2) if __name__ == '__main__': pygame.init() bad_touch = pygame.mixer.Sound('badswap.wav') match_three = pygame.mixer.Sound('match3.wav') match_more_than_three = pygame.mixer.Sound('match4.wav') display.fill(bg_color) while True: draw_chest() for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() pygame.display.update() fps_clock.tick(fps)
目前不知道后续还有些什么需求,所以简单修改一下,后期有需要再来修改代码。
运行结果如下:
有一个大体的框架了,接下来就是把星星放到游戏界面当中来了。嗯,因为我们有星星,所以我找了免费的饼干来代替星星。这些饼干也是五子连珠的棋子