用户:
Thunmen查看:0 回复:1 评论:0 创建时间:2021-05-22T21:43:22
【作品展示】

【作品介绍】
玩家需要在游戏中扮演旅行者一号在太空中躲避陨石
【作品源代码】
import pygame
import sys
import random
import math
import easygui
import time
easygui.msgbox('旅行者1号是由喵宇航局研制的一艘无人外太阳系空间探测器。重815千克,于1977年9月5日发射。它是第一个提供了木星、土星以及其卫星详细照片的探测器。是距今离地球最远的人造卫星。截至2019年10月23日止,旅行者1号正处于离太阳211亿公里的距离。', '角色介绍', 'Ok')
easygui.msgbox('如今旅行者1号仍然在宇宙中流浪,可宇宙中不只有美丽的恒星或星系,更多的是无尽的陨石,现在就让我们来模拟操控旅行者一号躲避陨石', '背景介绍', 'Ok')
easygui.msgbox('请使用W,A,S,D或方向键对旅行者一号进行操控躲避陨石','操作介绍','Ok')
class player(object):
def __init__(self):
self.show = [pygame.image.load(r'c:\sucai\player.png'),pygame.image.load(r'c:\sucai\player_death.png')]
self.LRR = 200
self.URD=600
self.death=True
def get(self):
screen.blit(player.show[0],(player.LRR,player.URD))
global score
score+=1
class yunshi(object):
def __init__(self):
self.size=random.randint(25,50)
self.shape=pygame.transform.scale(pygame.image.load(r'c:\sucai\yunshi.png'),(self.size,self.size))
self.stx=random.randint(0,650)
self.sty=-200
self.movey=random.randint(2,8)
def move(self):
self.sty+=self.movey
if self.sty>=1100:
self.size=random.randint(25,50)
self.shape=pygame.transform.scale(pygame.image.load(r'c:\sucai\yunshi.png'),(self.size,self.size))
self.sty=-200
self.stx=random.randint(0,650)
self.movey=random.randint(1+math.floor(score/120),4+math.floor(score/60))
screen.blit(self.shape,(self.stx,self.sty))
def check(self):
player_rect = pygame.Rect(player.LRR,player.URD,player.show[0].get_width(),player.show[0].get_height())
yunshi_rect=pygame.Rect(self.stx,self.sty,self.shape.get_width(),self.shape.get_height())
if yunshi_rect.colliderect(player_rect):
return True
else:
return False
def act():
screen.blit(bg, (0, 0))
screen.blit(font.render('time:%ss' %(math.floor(score/60)),1,(255,255,255)),(0,0))
player.get()
yunshi0.move()
yunshi1.move()
yunshi2.move()
def end():
first_line='GameOver!'
flf=pygame.font.SysFont("Arial", 114)
flc=font.render(first_line, 50, (255, 0, 0))
second_line='Your final score is %s seconds and %s ticks!' %((math.floor(score/60)),score%60)
slf=pygame.font.SysFont("Arial", 10)
slc=font.render(second_line, 0, (255, 255, 255))
screen.blit(flc,(240,100))
screen.blit(slc,(0,200))
screen.blit(player.show[1],(player.LRR,player.URD))
player.death=False
pygame.display.flip()
time.sleep(5)
easygui.msgbox('按下按键退出','游戏结束','结束')
if __name__ == '__main__':
pygame.init()
pygame.font.init()
player=player()
yunshi0=yunshi()
yunshi1=yunshi()
yunshi2=yunshi()
score=0
font = pygame.font.SysFont("Arial", 35)
screen_size = x, y = 650, 900
screen = pygame.display.set_mode(screen_size)
bg = pygame.image.load(r'c:\sucai\bg.png')
clock = pygame.time.Clock()
pygame.key.set_repeat(10,15)
while True:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type==pygame.KEYDOWN and player.death:
if event.key==pygame.K_a or event.key==pygame.K_LEFT:
player.LRR-=3
if event.key == pygame.K_d or event.key == pygame.K_RIGHT:
player.LRR += 3
if event.key == pygame.K_w or event.key == pygame.K_UP:
player.URD -= 3
if event.key == pygame.K_s or event.key == pygame.K_DOWN:
player.URD += 3
if player.LRR < 0:
player.LRR += 3
elif player.LRR>x-100:
player.LRR -= 3
if player.URD > 827:
player.URD -= 3
elif player.URD<0:
player.URD += 3
if yunshi0.check() or yunshi1.check() or yunshi2.check():
end()
sys.exit()
else:
act()
pygame.display.flip()
pygame.quit()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn注意:
1.素材下载地址:https://pan.baidu.com/s/1pG6oS75n2cKNjP_f9C5dYw(提取码:T3BS)
2.压缩包直接解压到C盘才可以使用
点赞1
评论