Compare commits
5 Commits
Author | SHA1 | Date |
---|---|---|
唐志超 | d256268ebd | 6 months ago |
唐志超 | 6a90e3f2d8 | 6 months ago |
唐志超 | 03857c12df | 6 months ago |
p3zqi2com | 6e8d762938 | 6 months ago |
唐志超 | ca567ca2a6 | 6 months ago |
@ -0,0 +1,12 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
'''定义一些超参'''
|
||||||
|
WIDTH = 600
|
||||||
|
HEIGHT = 600
|
||||||
|
NUMGRID = 8
|
||||||
|
GRIDSIZE = 64
|
||||||
|
XMARGIN = (WIDTH - GRIDSIZE * NUMGRID) // 2
|
||||||
|
YMARGIN = (HEIGHT - GRIDSIZE * NUMGRID) // 2
|
||||||
|
ROOTDIR = os.getcwd()
|
||||||
|
FPS = 30
|
@ -0,0 +1,66 @@
|
|||||||
|
import os
|
||||||
|
import pygame
|
||||||
|
from utils import *
|
||||||
|
from config import *
|
||||||
|
|
||||||
|
|
||||||
|
'''游戏主程序'''
|
||||||
|
def main():
|
||||||
|
pygame.init()
|
||||||
|
screen = pygame.display.set_mode((WIDTH, HEIGHT))
|
||||||
|
pygame.display.set_caption('消消乐')
|
||||||
|
# 加载背景音乐
|
||||||
|
pygame.mixer.init()
|
||||||
|
pygame.mixer.music.load(os.path.join(ROOTDIR, "resources/audios/bg.mp3"))
|
||||||
|
pygame.mixer.music.set_volume(0.6)
|
||||||
|
pygame.mixer.music.play(-1)
|
||||||
|
# 加载音效
|
||||||
|
sounds = {}
|
||||||
|
sounds['mismatch'] = pygame.mixer.Sound(os.path.join(ROOTDIR, 'resources/audios/badswap.wav'))
|
||||||
|
sounds['match'] = []
|
||||||
|
for i in range(6):
|
||||||
|
sounds['match'].append(pygame.mixer.Sound(os.path.join(ROOTDIR, 'resources/audios/match%s.wav' % i)))
|
||||||
|
# 加载字体
|
||||||
|
font = pygame.font.Font(os.path.join(ROOTDIR, 'resources/font.TTF'), 25)
|
||||||
|
# 图片加载
|
||||||
|
gem_imgs = []
|
||||||
|
for i in range(1, 8):
|
||||||
|
gem_imgs.append(os.path.join(ROOTDIR, 'resources/images/gem%s.png' % i))
|
||||||
|
# 主循环
|
||||||
|
game = gemGame(screen, sounds, font, gem_imgs)
|
||||||
|
while True:
|
||||||
|
score = game.start()
|
||||||
|
flag = False
|
||||||
|
# 一轮游戏结束后玩家选择重玩或者退出
|
||||||
|
while True:
|
||||||
|
for event in pygame.event.get():
|
||||||
|
if event.type == pygame.QUIT or (event.type == pygame.KEYUP and event.key == pygame.K_ESCAPE):
|
||||||
|
pygame.quit()
|
||||||
|
sys.exit()
|
||||||
|
elif event.type == pygame.KEYUP and event.key == pygame.K_r:
|
||||||
|
flag = True
|
||||||
|
if flag:
|
||||||
|
break
|
||||||
|
screen.fill((135, 206, 235))
|
||||||
|
text0 = 'Final score: %s' % score
|
||||||
|
text1 = 'Press <R> to restart the game.'
|
||||||
|
text2 = 'Press <Esc> to quit the game.'
|
||||||
|
y = 150
|
||||||
|
for idx, text in enumerate([text0, text1, text2]):
|
||||||
|
text_render = font.render(text, 1, (85, 65, 0))
|
||||||
|
rect = text_render.get_rect()
|
||||||
|
if idx == 0:
|
||||||
|
rect.left, rect.top = (212, y)
|
||||||
|
elif idx == 1:
|
||||||
|
rect.left, rect.top = (122.5, y)
|
||||||
|
else:
|
||||||
|
rect.left, rect.top = (126.5, y)
|
||||||
|
y += 100
|
||||||
|
screen.blit(text_render, rect)
|
||||||
|
pygame.display.update()
|
||||||
|
game.reset()
|
||||||
|
|
||||||
|
|
||||||
|
'''test'''
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 26 KiB |