完成图片:
image.png依赖文件:
image.png
background :背景音乐
money:元宝图片
pickup:接到元宝的提示音
player:游戏人物
注意文件格式,pygame能识别的文件格式有限。
下面是完整代码:
import pygame, sys, os, random
from pygame.locals import *
# set up pygame
pygame.init()
mainClock = pygame.time.Clock()
# set up the window
WINDOWWIDTH = 600
WINDOWHEIGHT = 600
windowSurface = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
pygame.display.set_caption('**今天超开心!')
# set up the colors
WHITE = (255,170, 213)
# set up the block data structure
player = pygame.Rect(300, 100, 140, 140) # 游戏人物的初始大小
playerImage = pygame.image.load('player.png')
playerStretchedImage = pygame.transform.scale(playerImage, (140, 140))
foodImage = pygame.image.load('money.png')
foods = []
for i in range(20):
foods.append(pygame.Rect(random.randint(0, WINDOWWIDTH - 20), random.randint(0, WINDOWHEIGHT - 20), 20, 20))
foodCounter = 0
NEWFOOD = 20
# set up keyboard variables
moveLeft = False
moveRight = False
moveUp = False
moveDown = False
MOVESPEED = 6
# set up music
pickUpSpund = pygame.mixer.Sound('pickup.wav')
pygame.mixer.music.load('backgroud.mid')
pygame.mixer.music.play(-1, 0.0)
musicPlaying = True
# run the game loop 通过键盘上下左右控制游戏人物
while True:
# check for the QUIT event
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
# change rhe keyboard varuables
if event.key == K_LEFT or event.key == K_a:
moveRight = False
moveLeft = True
if event.key == K_RIGHT or event.key == K_d:
moveLeft = False
moveRight = True
if event.key == K_UP or event.key == K_w:
moveDown = False
moveUp = True
if event.key == K_DOWN or event.key == K_s:
moveUp = False
moveDown = True
if event.type == KEYUP:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
if event.key == K_LEFT or event.key == K_a:
moveLeft = False
if event.key == K_RIGHT or event.key == K_d:
moveRight = False
if event.key == K_UP or event.key == K_w:
moveUp = False
if event.key == K_DOWN or event.key == K_s:
moveDown = False
if event.key == K_x:
player.top = random.randint(0, WINDOWHEIGHT - player.height)
player.left = random.randint(0, WINDOWHEIGHT - player.width)
if event.key == K_m:
if musicPlaying:
pygame.mixer.music.stop()
else:
pygame.mixer.music.play(-1, 0.0)
musicPlaying = not musicPlaying
if event.type == MOUSEBUTTONUP:
foods.append(pygame.Rect(event.pos[0] - 10, event.pos[1] - 10, 20, 20))
foodCounter += 1
if foodCounter >= NEWFOOD:
# add new food
foodCounter = 0
foods.append(pygame.Rect(random.randint(0, WINDOWWIDTH - 20), random.randint(0, WINDOWHEIGHT - 20), 20, 20))
# draw the black backgroud onto the surface
windowSurface.fill(WHITE)
# move the player
if moveDown and player.bottom < WINDOWHEIGHT:
player.top += MOVESPEED
if moveUp and player.top > 0:
player.top -= MOVESPEED
if moveLeft and player.left > 0:
player.left -= MOVESPEED
if moveRight and player.right < WINDOWWIDTH:
player.right += MOVESPEED
# draw the block onto the surface
windowSurface.blit(playerStretchedImage, player)
# check if the block has intersected with any food squares.
for food in foods[:]:
if player.colliderect(food):
foods.remove(food)
player = pygame.Rect(player.left, player.top, player.width+2, player.height + 2) # 接到元宝游戏人物可以变大一些
playerStretchedImage = pygame.transform.scale(playerImage, (player.width, player.height))
if musicPlaying:
pickUpSpund.play()
# draw the food
for food in foods:
windowSurface.blit(foodImage, food)
# draw the windoe onto the screen
pygame.display.update()
mainClock.tick(40)
是在新年期间改的代码,用了红色的背景。
依赖文件要和.py文件放在同一目录下,或者在py文件中写绝对路径。
还可以再做改进!
网友评论