我最近在读一套书:Jeff Kinney的小屁孩日记系列(Diary of a Wimpy Kid)。其中一本The Meltdown中雪球大战的情节让我萌生了做一个雪球大战游戏的念头。
语言我用的是python,使用pygame包。
注意:此项目尚未完成,目前只完成了部分内容,欢迎各位指正
部分代码展示:(请自行忽略前面的No Bugs护身符)我
'''
NO BUGS
BBBBBBBBBBBBBBB UUUU UUUU GGGG
BBBBBBBBBBBBBBBB UUUU UUUU GGGGGGGGGG
BBBB BBBB UUUU UUUU GGGG GGGG
BBBB BBBB UUUU UUUU GGGG GGGG
BBBB BBBB UUUU UUUU GGGG GGGG
BBBB BBB UUUU UUUU GGGG
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
BBBB BBB UUUU UUUU GGGG GGGGGGGGGGG
BBBB BBBB UUUU UUUU GGGG GGGGGG GGGG
BBBB BBBB UUUUU UUUUU GGGG GGGG GGGG
BBBB BBBB UUUUU UUUUU GGGG GGGG
BBBBBBBBBBBBBBBB UUUUUUUUUUUUUUUUU GGGGGGGGGG
BBBBBBBBBBBBBBB UUUUUUUUUUUUU GGGG
'''
import pygame
import sys
from background import Background
from greg import Greg
from snowball import Snowball
class Main:
def __init__(self):
pygame.init()
self.screen_high = 522
self.screen_wide = 1341
self.screen = pygame.display.set_mode((self.screen_wide,self.screen_high))
self.screen_rect = self.screen.get_rect()
pygame.display.set_caption(f"---|Diary of a Wimpy Kid: The Meltdown|---")
# 背景对象
self.background = Background(self)
# Greg对象
self.greg = Greg(self)
# 雪球对象
self.snowballs = pygame.sprite.Group()
def check(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
self._check_keydown(event.key)
elif event.type == pygame.KEYUP:
self._check_keyup(event.key)
def _check_keydown(self,event):
# WASD键控制Greg的移动
if event == pygame.K_w:
self.greg.move_up = True
elif event == pygame.K_s:
self.greg.move_down = True
elif event == pygame.K_a:
self.greg.move_left = True
elif event == pygame.K_d:
self.greg.move_right = True
# 空格键投雪球
elif event == pygame.K_SPACE:
new_ball = Snowball(self.greg.direction,self)
self.snowballs.add(new_ball)
# esc键退出
elif event == pygame.K_ESCAPE:
sys.exit()
def _check_keyup(self,event):
# WASD键控制Greg不移动
if event == pygame.K_w:
self.greg.move_up = False
elif event == pygame.K_s:
self.greg.move_down = False
elif event == pygame.K_a:
self.greg.move_left = False
elif event == pygame.K_d:
self.greg.move_right = False
#刷新雪球
def update_snowballs(self):
self.snowballs.update()
self.snowballs.draw(self.screen)
for snowball in self.snowballs.sprites():
# 监测是否触碰到边缘
left_edge = snowball.x <= 0
right_edge = snowball.x >= self.screen_wide
up_edge = snowball.y <= 0
down_edge = snowball.y >= self.screen_high
if left_edge or right_edge or up_edge or down_edge:
self.snowballs.remove(snowball)
def update(self):
# 刷新背景
self.background.blitme()
# 刷新Greg ^_^
self.greg.blitme()
self.greg.update()
# 刷新雪球
self.update_snowballs()
pygame.display.flip()
def run_game(self):
while True:
self.update()
self.check()
if __name__ == '__main__':
main = Main()
main.run_game()
目前Greg可以四处走动并投掷雪球,下面我准备加入更多的元素,如敌人和障碍物等。我会持续更新这个系列的。
详细代码可通过网盘链接下载:
链接:https://pan.baidu.com/s/1URppxgqf7prEiiXiOITe8w?pwd=p62i
欢迎各位指正!
补发一张截图: