经典游戏 Python实现跳一跳 经典版pygame

为何将用pygame制作的跳一跳程序放到四足机器人这个专栏呢?

我觉的他们有共同点的:

跳一跳:用户点击 棋子 根据接触屏幕时间的长短来控制其弹跳的高度h与距离s

四足机器人:操作者通过摆动遥感,控制机器人运动方向,若遥感朝前表示四足机器人朝前走,又由于上一篇中描述了,机器人腿部脚端轨迹符合摆线方程,然后再通过某种类似节律的方式使得四条腿各自再此节律周期内规律运动,总而使得机器人实现各种动作,例如:跳跃,对角小跑,空翻,漫步,匍匐前进,扭屁股,如厕等....

回归重点:

在跳一跳中,我设计的是棋子通过二次方程的轨迹弹出:

y=y+math.sin(math.radians(t2))*(-x1/3-2)

先看图吧!这个有图才有真相!

                                                          

 

整篇代码:

import random
import pygame
import sys
from pygame.locals import*
import math

pygame.init()
clock = pygame.time.Clock()
pygame.mixer.init()
pygame.font.init()
#字体
ziti=pygame.font.Font("ziti.ttf",50)
##音乐
pygame.mixer.music.load("66.ogg")
pygame.mixer.music.play()
m1=pygame.mixer.Sound("tiaoyue.ogg")#跳跃
m2=pygame.mixer.Sound("ba.ogg")#落下
m3=pygame.mixer.Sound("shibai.ogg")#GG
size=width,height=1000,600
screen=pygame.display.set_mode(size)
pygame.display.set_caption("贪玩蓝月")
bg=(255,206,232)
BLACK=(0,0,0)
i1=pygame.image.load("1.jpg")
i1=pygame.transform.smoothscale(i1,(200,100))
qz=pygame.image.load("qz.png")
qz=pygame.transform.smoothscale(qz,(50,100))
oqz=qz
pqz=x,y=125,400
opqz=pqz
#方块
list=[(1,1)]*30
for i in range(29):
    list[i]=(random.randint(400,900),-100)
list[0]=(50,500)
list[1]=(550,500)
#qz_r=pygame.transform.rotate(qz,90)
#qz_t=pygame.transform.rotate(qz,180)
#计时器判断
pan1=False
pan2=False
pan3=False
pan4=False
pan5=False
pan6=False
pan7=False
#计时器
t1=0
t2=0
#缓存区
x1=0
#计分区
fen1=0


#循环区
while True:
    #退出
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
#计时器
        if event.type==MOUSEBUTTONDOWN:            
            if event.button==1:                
                pan1=True
                m1.play()
                
        
        if event.type == MOUSEBUTTONUP:
            if event.button == 1:
                pan1 = False
                pan2=True
                t1=0
                y=400
                m1.stop()
                                
    
    if pan1:
        t1=t1+1
        x1=t1
        qz=pygame.transform.smoothscale(qz,(50,100-t1))
        y=400+t1

    if pan2:
       t2=t2+6
       x=x+x1/6
       qz=pygame.transform.smoothscale(oqz,(50,100))
       
        
            
    if t2>=360:
        pan2=False
        m2.play()
        t2=0

    if x>list[fen1+1][0]-50 and x<list[fen1+1][0]+200 and y>399:
        pan3=True

    if x>list[fen1][0]+200 and x<list[fen1+1][0]-50 and y>399 or y>399 and x>list[fen1+1][0]+200:
        pan5=True

    if pan3:        
        list[fen1+1]=(list[fen1+1][0]-10,list[fen1+1][1])
        list[fen1]=(list[fen1][0]-10,list[fen1][1])
        x=x-10
        if x<110:
            fen1+=1
            pan3=False
            pan4=True

    if pan4:
        list[fen1+1]=(list[fen1+1][0],list[fen1+1][1]+10)
        if list[fen1+1][1]==500:
            pan4=False

    if y>499:
        pan6=True
        pan5=False

    if pan5:
        y+=10

    if pan7:
        pan6=False
            
    if pan6:
        m3.play()
        pan6=False
        pan7=True
                  
    y=y+math.sin(math.radians(t2))*(-x1/3-2)
    pqz=x,y
    print(t1,x1,t2)
    #输出    
    screen.fill(bg)
    fen_str=str(fen1)
    ziti1 = ziti.render(fen_str,True,(0,0,0))
    screen.blit(ziti1, (20, 20))
    screen.blit(i1,list[fen1])
    screen.blit(i1,list[fen1+1])
    screen.blit(qz,pqz)
    pygame.display.flip()

    clock.tick(60)
  

 

 完整代码我已经开源了:

点这里:https://download.csdn.net/download/qq_41058594/10549492

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗香独自开

你的鼓励是我总结的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值