猫史档案馆


【Python作品分享】超级马里奥【作品秀】

用户:爱编程的瑞瑞爱编程的瑞瑞查看:0 回复:1 评论:0 创建时间:2023-01-08T14:54:31


【作品展示】

center_image

 

【作品介绍】

超级马里奥

测试版,有问题找我

 

【作品源代码】

import pgzrun
import random
import time
import turtle

# 按上键跳左右键控制左右
# 按下键蹲 按N加速
# 按s键切换海洋和陆地
# 在海洋里按上键是游泳
# 注意!海洋里不能加速
# 按下g键拿东西,松开g键放下东西
# 按w键再放开g键时,物体像上抛
# 蹲下时放开g键物体像水平方向走 

WIDTH = 948
HEIGHT = 710
mali=Actor('1', (474,0))
j=Actor('喵', (400,540))
mg=Actor('mg',(400,0))
# 变量区
mali_speed=0.3
jump=False
m=1
bu=10
s=0
op=0
na=0
j_speed=0
ji=0
jw=0
ui=0
luhai=2
ri=0
zl=0.1
zu=0
mg_sleep=5
mgd=0

# 准备工作
def draw():
    global game_state,hp,mp
    screen.blit('bg-1', (0, 0))
    j.draw()
    mali.draw()
    mg.draw()
def update():
    # 设置全局变量
    global jump,mali_speed,game_state,m,bu,s,op,na,j_speed,ji,jw,ui,luhai,ri,zl,zu,mg_sleep,mgd
    # 蘑菇脚本
    mg.x+=mg_sleep
    mg.angle-=mg_sleep
    mg.y-=mgd
    mgd-=0.3
    if (mg.y>=560):
        mg.y+=mgd
        mgd=0
    if (mg.x>=948 or mg.x<=0):
        mg_sleep=-mg_sleep
    # 旋转跳
    if keyboard.e and luhai==1:
        if (zu == 2):
            zu = 0
            if (m != 12):
                m = 12
                mali.image = '12'
            elif (m == 12):
                m = 13
                mali.image = '13'
        zu += 1
        if (mali.y >= 540):
            mali.y += mali_speed
            mali_speed = 5
    # 扔
    if (mali.y >= 540):
        if (na == 0):
            mali.image = '1'
        if (na == 1):
            mali.image = '3'
        mali.y += mali_speed
        mali_speed = 0
        m = 1
    mali.y -= mali_speed
    mali_speed-=zl
    j.x+=ji
    if (na==1):
        na=0
        ui=1
    elif (na==0):
        if (ui==1):
            mali.y-=30
            m=5
            mali.image = '5'
            ui=0
    # 物体下落
    j.y -= j_speed
    j_speed-=zl
    # 物体撞击地面
    if (j.y>=540):
        j.y+=j_speed
        j_speed=0
    # 拿和抛的设置
    if keyboard.g:
        if j.collidepoint(mali.pos):
            j.x=mali.x+10
            j.y=mali.y
            na=1
            j_speed=0
            if (m==14):
                j_speed=8
            elif (m==10):
                if (op==0):
                    ji=-10
                    jw=1
                elif (op==1):
                    ji=10
                    jw=2
    # 物体阻力
    if (ji!=0):
        if (jw==2):
            ji-=0.5
        else:
            ji+=0.5
    # 跳和游泳
    if keyboard.up:
        if (mali.y<=540):
            if (luhai==1):
                mali_speed=10
            elif (luhai==2):
                mali_speed = 2
                if (ri==9):
                    ri=0
                    if (m != 15 and m !=16):
                        m=15
                        if (na==0):
                            mali.image='15'
                        else:
                            mali.image='18'
                    elif (m == 15):
                        m=16
                        if (na==0):
                            mali.image='16'
                        else:
                            mali.image='19'
                    elif (m == 16):
                        m=17
                        if (na==0):
                            mali.image='17'
                        else:
                            mali.image='20'
            if (luhai == 1):
                m=7
                mali.image='7'
            if (ri != 9):
                ri+=1
    # 掉落
    if (mali_speed<=-1):
        if (m != 5 and luhai==1 and m!=12 and m!=13):
            m=8
            mali.image='8'
    # 向左走
    if keyboard.left:
        op=0
        if (s==5):
            s=0
            if (m==1):
                if (na==0):
                    mali.image='2'
                elif (na==1):
                    mali.image='4'
                m=0
            elif (m==2):
                if (na==0):
                    mali.image='1'
                elif (na==1):
                    mali.image='3'
                m=1
        mali.x-=bu
        s+=1
    # 向右走
    if keyboard.right:
        if (op==0 and bu==15):
            mali.image='9'
            time.sleep(0.5)
        op=1
        if (s==5):
            s=0
            if (m == 1 or m == 2):
                if (m == 1):
                    if (na==0):
                        mali.image='2'
                    elif (na==1):
                        mali.image='4'
                    m=2
                elif (m==2):
                    if (na==0):
                        mali.image='1'
                    elif (na==1):
                        mali.image='3'
                m=1
        mali.x+=bu
        s+=1
    # 加速
    if keyboard.n:
        if (luhai==1):
            bu=15
    else:
        if (luhai==1):
            bu=5
        elif (luhai==2):
            bu=2
    # 蹲
    if keyboard.down:
        m=10
        if (na==0):
            mali.image='10'
        elif (na==1):
            mali.image='11'
    # 抬头扔
    if keyboard.w:
        if (na==1):
            m=14
            mali.image='14'
    # 切换海洋与陆地
    if keyboard.s:
        if (luhai==1):
            luhai=2
        else:
            luhai=1
    if (luhai==1):
        zl=0.3
    else:
        zl=0.1

pgzrun.go()

 

【提示】

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

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
开朗的种花兔开朗的种花兔

你也用pygame?

点赞0


评论