0
点赞
收藏
分享

微信扫一扫

用python制作简易小游戏

扬帆远航_df7c 2022-04-19 阅读 72
pythonpygame

那是一个***……***的日子,在打游戏的时候,我有了一个不太成熟的想法,要不要做一个游戏玩玩?

在看了一天的视频资料后(当时感觉就那样:cry:),但是做的时候,感觉夸大了:sob:

so……放弃****,不可能滴,游戏就是一张张图片的不断加载,那么,请欣赏代码:

import pygame
import random
import time
import  sys
pygame.init()
color1=(0,128,128)
color2=(20,20,20)
screen_image=pygame.display.set_mode((1200,600))
screen_rect=screen_image.get_rect()
screen_image.fill(color1)
# 添加文字
pygame.display.set_caption('SPACESHIP WAR')
#导入飞船图片
ship=pygame.image.load('image/ship.jpeg')
ship_rect=ship.get_rect()
ship_rect.midbottom=screen_rect.midbottom
move_rect=0
# 创建一个精灵模块
enemies=pygame.sprite.Group()

# 导入胜利图片
over_image=pygame.image.load('image/vic.jpeg')
over_rect=over_image.get_rect()
over_rect.center=screen_rect.center

for i in range(4):
    enemie_sprite=pygame.sprite.Sprite()
    enemie_sprite.image=pygame.image.load('image/ene.jpeg')
    enemie_sprite.rect=enemie_sprite.image.get_rect()
    enemie_sprite.rect.x=random.randint(200,1200)
    enemie_sprite.rect.y=random.randint(50,200)
    enemies.add(enemie_sprite)
# 定义飞船初始状态
move_left=0
move_right=0
move_up=0
move_down=0
# 精灵模块
bullets=pygame.sprite.Group()
# 定义个初始变量,用来控制飞船方向
ft=1
# 定义敌人来袭次数
x=3
# 做一个死循环,使得窗口一直“健在”
while 1:
    # 捕捉事件
    for event in pygame.event.get():
        # 当鼠标点击到关闭按钮时,关闭窗口
        if event.type==pygame.QUIT:
            exit()
        # 捕捉筛选出键盘按下的操作
        elif event.type==pygame.KEYDOWN:
            # 打过cf等游戏,并且认识adws的应该懂吧
            if event.key==pygame.K_a:
                move_left=1
            if event.key==pygame.K_d:
                move_right=1
            if event.key == pygame.K_w:
                move_up = 1
            if event.key == pygame.K_s:
                move_down = 1
            # 按下回车键时会发出子
            if event.key==pygame.K_KP_ENTER:
                new_bullet = pygame.sprite.Sprite()
                # 创建子弹
                new_bullet.rect=pygame.Rect(0,0,5,10)
                new_bullet.rect.midbottom=ship_rect.midtop
                bullets.add(new_bullet)
        # 捕捉筛选出抬起按键的操作
        elif event.type==pygame.KEYUP:
            if event.key == pygame.K_a:
                move_left = 0
            if event.key == pygame.K_d:
                move_right = 0
            if event.key == pygame.K_w:
                move_up = 0
            if event.key == pygame.K_s:
                move_down = 0
    # 检测,控制飞船图标的移动
    if move_left and ship_rect.left>0:
        ship_rect.x-=1
    if move_right and ship_rect.right<screen_rect.right:
        ship_rect.x+=1
    if move_up and ship_rect.top>0:
        ship_rect.y-=1
    if move_down and ship_rect.bottom<screen_rect.bottom:
        ship_rect.y+=1

    # ----------!!!!------------
    # 从这里就开始绘制了
    # 对窗口进行填充,将
    screen_image.fill(color1)
    screen_image.blit(ship, ship_rect)
    # 取出子弹,并将子弹向上“发射出去”
    for bullet in bullets:
        pygame.draw.rect(screen_image, color2, bullet.rect)
        bullet.rect.y-=1
    # 整一下敌人的乱跑……
    for enemy in enemies:
        enemy.rect.x+=1*ft
        if enemy.rect.right>screen_rect.right or enemy.rect.left<0:
            ft*=-1
            for enemy in enemies:
                enemy.rect.y+=10
    # 绘制敌人
    enemies.draw(screen_image)
    pygame.sprite.groupcollide(bullets,enemies,True,True)
    # 敌人的剩余,如果全die了的话就重新拉援兵!!!!!
    if x>1:
        if not enemies :
            x-=1
            bullets.empty()
            for i in range(4):
                enemie_sprite = pygame.sprite.Sprite()
                enemie_sprite.image = pygame.image.load('image/ene.jpeg')
                enemie_sprite.rect = enemie_sprite.image.get_rect()
                enemie_sprite.rect.x = random.randint(200, 1200)
                enemie_sprite.rect.y = random.randint(50, 200)
                enemies.add(enemie_sprite)
    # 最后胜利了,就加在之前的victory图片。庆祝一下!!!!!
    if x==1 and not enemies:
        bullets.empty()
        # 胜利时停顿一秒
        time.sleep(1)
        screen_image.blit(over_image,over_rect)
    # 记住,必须要对窗口进行刷新,
    # 可以想象就是就是一帧一帧的图片
    pygame.display.flip()

 不是我打不过啊,其实四个敌人绰绰有余了:kissing_closed_eyes::kissing_closed_eyes::kissing_closed_eyes:

 你看,这不就赢了吗!!!!!

 

最后,我是个萌新啦,大牛勿喷,欢迎建议~~~~

举报

相关推荐

0 条评论