猫史档案馆


【Python作品分享】[36强进10]去太空,趣编程

用户:ThunmenThunmen查看:0 回复:1 评论:0 创建时间:2021-05-22T21:43:22


【作品展示】

center_image

 

【作品介绍】

玩家需要在游戏中扮演旅行者一号在太空中躲避陨石

 

【作品源代码】

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 页 / 共 1下一页
ThunmenThunmen

注意:

1.素材下载地址:https://pan.baidu.com/s/1pG6oS75n2cKNjP_f9C5dYw(提取码:T3BS)

2.压缩包直接解压到C盘才可以使用

点赞1


评论