猫史档案馆


【Python作品分享】打小人

用户:01_DZY01_DZY查看:0 回复:0 评论:0 创建时间:2022-04-08T12:10:53


【作品展示】

center_image

 

【作品介绍】

第一个正经游戏

 

【作品源代码】

#初始化
import pygame
pygame.init()
from sys import exit
#设置&唤出窗口
scr = pygame.display.set_mode((925,575))
pygame.display.set_caption("打小人")
#加载图片资源
bj = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\bj py.png')
cc1 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\cc py.png')
cc2 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\cc py.png')
cc3 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\cc py.png')
q_jz = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\q_jz py.png')
q_fs = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\q_fs py.png')
zd1 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd2 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd3 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd4 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd5 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd1 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd2 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd3 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd4 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd5 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd1 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd2 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd3 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd4 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd5 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd1 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd2 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd3 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd4 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
zd5 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zd py.png')
dr = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\dr py.png')
dr_tb1 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\dr_tb py.png')
dr_tb2 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\dr_tb py.png')
dr_tb3 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\dr_tb py.png')
dr_tb4 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\dr_tb py.png')
dr_tb5 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\dr_tb py.png')
dr_tb6 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\dr_tb py.png')
dr_tb7 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\dr_tb py.png')
dr_tb8 = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\dr_tb py.png')
mz = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\mz py.png')
zx = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\zx py.png')
sl = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\sl py.png')
sb = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\sb py.png')
cxks = pygame.image.load('C:\\Users\\donziyi\\Desktop\\dxr\\cxks py.png')
#变量初始化
num1 = 20 #弹药变量
num2 = 8 #敌人血量变量
num3 = 0 #结局变量
n,m = (200,200) #敌人位置变量
num4 = 0 #敌人x位置变量
num5 = 0 #敌人y位置变量
sjfk = {'sj':False,'sj1':False,'sj2':False,'sj3':False}
#游戏主循环&退出
while True :
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    #背景绘制
    scr.blit(bj,(0,0))
    #敌人的绘制&事件计算
    if num3 == 0 :
        if n == 200 :
           num4 = 0
        elif n == 700 : 
            num4 = 1 
        
        if num4 == 0 :
            n += 20
        elif num4 == 1 :
            n -= 20
        
        if m == 160 :
            num5 = 0
        elif m == 200 :
            num5 = 1

        if num5 == 0:
            m += 4
        elif num5 == 1 :
            m -= 4
    if num3 == 1 :
        scr.blit(dr,(1000,1000))        
    elif num3 == 2 :
        dr_rect = pygame.Rect(n, m, 101, 250)
        scr.blit(dr,(dr_rect))
    else :    
        dr_rect = pygame.Rect(n, m, 101, 250)
        scr.blit(dr,(dr_rect))
    #喵丛绘制
    cc1_rect = pygame.Rect (56, 300, 400, 226)
    cc2_rect = pygame.Rect (296, 260, 400, 226)
    cc3_rect = pygame.Rect (494, 299, 400, 226)
    scr.blit(cc1, (cc1_rect))
    scr.blit(cc2, (cc2_rect))
    scr.blit(cc3, (cc3_rect))
    #喵绘制&事件计算
    if num3 == 0 :
        if event.type == pygame.MOUSEBUTTONDOWN:
            scr.blit(q_fs,(775,425))
        else:
            scr.blit(q_jz,(775,425))
    #弹药绘制&事件计算
    if num3 == 0 :
        if num1 > 0 :
            scr.blit(zd1,(20,520))
        else :
            scr.blit(zd1,(20,600))
        if num1 > 1 :
            scr.blit(zd2,(40,520))
        else :
            scr.blit(zd2,(40,600))
        if num1 > 2 :
            scr.blit(zd3,(60,520))
        else :
            scr.blit(zd3,(60,600)) 
        if num1 > 3 :
            scr.blit(zd4,(80,520))
        else :
            scr.blit(zd4,(80,600))
        if num1 > 4 :
            scr.blit(zd5,(100,520))
        else :
            scr.blit(zd5,(100,600))
        if num1 > 5 :
            scr.blit(zd5, (120, 520))
        else:
            scr.blit(zd5, (120, 600))
        if num1 > 6 :
            scr.blit(zd5, (140, 520))
        else:
            scr.blit(zd5, (140, 600))
        if num1 > 7 :
            scr.blit(zd5, (160, 520))
        else:
            scr.blit(zd5, (160, 600))
        if num1 > 8 :
            scr.blit(zd5, (180, 520))
        else:
            scr.blit(zd5, (180, 600))
        if num1 > 9 :
            scr.blit(zd5, (200, 520))
        else:
            scr.blit(zd5, (200, 600))
        if num1 > 10 :
            scr.blit(zd5, (20, 465))
        else:
            scr.blit(zd5, (20, 600))
        if num1 > 11 :
            scr.blit(zd5, (40, 465))
        else:
            scr.blit(zd5, (40, 600))
        if num1 > 12 :
            scr.blit(zd5, (60, 465))
        else:
            scr.blit(zd5, (60, 600))
        if num1 > 13 :
            scr.blit(zd5, (80, 465))
        else:
            scr.blit(zd5, (80, 600))
        if num1 > 14 :
            scr.blit(zd5, (100, 465))
        else:
            scr.blit(zd5, (100, 600))
        if num1 > 15 :
            scr.blit(zd5, (120, 465))
        else:
            scr.blit(zd5, (120, 600))
        if num1 > 16 :
            scr.blit(zd5, (140, 465))
        else:
            scr.blit(zd5, (140, 600))
        if num1 > 17 :
            scr.blit(zd5, (160, 465))
        else:
            scr.blit(zd5, (160, 600))
        if num1 > 18 :
            scr.blit(zd5, (180, 465))
        else:
            scr.blit(zd5, (180, 600))
        if num1 > 19 :
            scr.blit(zd5, (200, 465))
        else:
            scr.blit(zd5, (200, 600))
    #敌人生命绘制&事件计算
    if num3 == 0 :
        if num2 > 0:
            scr.blit(dr_tb1, (40, 30))
        else:
            scr.blit(dr_tb1, (40, 700))
        if num2 > 1:
            scr.blit(dr_tb2, (80, 30))
        else:
            scr.blit(dr_tb2, (80, 700))
        if num2 > 2:
            scr.blit(dr_tb3, (120, 30))
        else:
            scr.blit(dr_tb3, (120, 700))
        if num2 > 3:
            scr.blit(dr_tb3, (160, 30))
        else:
            scr.blit(dr_tb3, (160, 700))
        if num2 > 4:
            scr.blit(dr_tb3, (200, 30))
        else:
            scr.blit(dr_tb3, (200, 700))
        if num2 > 5:
            scr.blit(dr_tb3, (240, 30))
        else:
            scr.blit(dr_tb3, (240, 700))
        if num2 > 6:
            scr.blit(dr_tb3, (280, 30))
        else:
            scr.blit(dr_tb3, (280, 700))
        if num2 > 7:
            scr.blit(dr_tb3, (320, 30))
        else:
            scr.blit(dr_tb3, (320, 700))
    #结局反馈
    if num1 == 0 and num2 == 0 :
        num3 = 1
    elif num1 == 0 and num2 > 0 :
        num3 = 2
    elif num1 > 0 and num2 == 0 :
        num3 = 1
    if num3 == 1 :
        scr.blit(sl,(400,150))
    elif num3 == 2:
        scr.blit(喵,(400,150))
    elif num3 == 0 :
        scr.blit(喵,(1000,1000))
    #重新开始绘制
    cxks_rect = pygame.Rect(425, 350, 50, 50)
    if num3 > 0 :
        scr.blit(cxks,(cxks_rect)) 
    else :
        scr.blit(cxks,(1000,1000))
    #准星绘制&事件计算
    x, y = pygame.mouse.get_pos()
    pygame.mouse.set_visible(False)
    x -= mz.get_width() / 2
    y -= mz.get_height() / 2
    scr.blit(mz,(x,y))
    x1,y1 = pygame.mouse.get_pos()
    x1 -= zx.get_width() / 2
    y1 -= zx.get_height() / 2
    zx_rect = pygame.Rect(x1, y1, 1, 1)
    scr.blit(zx,(zx_rect))
    #射击反馈
    if num3 == 0 :
        sjfk['sj'] = zx_rect.colliderect(dr_rect)
        sjfk['sj1'] = zx_rect.colliderect(cc1_rect)
        sjfk['sj2'] = zx_rect.colliderect(cc2_rect)
        sjfk['sj3'] = zx_rect.colliderect(cc3_rect)
        if event.type == pygame.MOUSEBUTTONDOWN:
            if num1 > 0 :   
                if sjfk['sj'] == True:
                    if sjfk['sj1'] == True or sjfk['sj2'] == True or sjfk['sj3'] == True:
                        num1 -= 1
                    else :    
                        num2 -= 1
                        num1 -= 1
                else :
                    num1 -= 1
    #重新开始事件
    num6 = zx_rect.colliderect(cxks_rect)
    if event.type == pygame.MOUSEBUTTONDOWN :    
        if num6 == True :
            num1 = 20 
            num2 = 8 
            num3 = 0 
            n,m = (200,200) 
            num4 = 0 
    #刷新
    fps = 25
    fcclock = pygame.time.Clock() 
    fcclock.tick(fps) 
    pygame.display.update()
    

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页