创建窗口,移动图像,控制小飞机在窗口移动,

# 导入函数库
​import pygame 
import sys


pygame.init() # 初始化

# 设定 窗口大小
screen_width = 500
screen_height = 500
# 建立窗口
s = pygame.display.set_mode((screen_width,screen_height))

# 获取窗口矩形
s_rect = s.get_rect()

# 获取窗口的四边
s_top = s_rect.top  # 类型 int
s_bottom = s_rect.bottom  # 类型 int
s_left = s_rect.left  # 类型 int
s_right = s_rect.right  # 类型 int

# 窗口命名
pygame.display.set_caption('移动小飞机')

# 载入图片
image1 = pygame.image.load("pictures/own/My.png")

# 获取图片的矩形
image1_rect = image1.get_rect()
image1_width = image1.get_width()  # 类型 int
image1_height = image1.get_height()  # 类型 int

# 设定 图片刚描绘进窗口时的位置
# 窗口左上角为 (0,0) 向左向右增加
# 图片位置由图片左上角位置决定(x,y)
x = screen_width/2-image1_width/2
y = screen_height-image1_height

# 图片的移动速度
speed = [5,5] #  x , y
# 使程序能够持续响应按键,(一直按则一直向左或向右),如果没有,则按一下动一下,()中的是延时
pygame.key.set_repeat(18)
# 循环使窗体持续存在,直到我们选择关闭窗体
while True:
     # 获取,判断,事件
    for event in pygame.event.get():
        # 使窗体能够退出
        if event.type == pygame.QUIT:
            sys.exit()  # 源于 sys 库
        # 判断按键,并执行相应操作
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                x -= speed[0]
                
                # 这个 if 判断 使图片在刚好完全进入窗体左侧时转移到窗体右侧
                if x <= s_left - image1_width:
                    x = s_rect.right
            elif event.key == pygame.K_d:
                x += speed[0]


                # 这个 if 判断 使图片在刚好完全进入窗体右侧时转移到窗体左侧
                if x >= s_rect.right:
                    x = s_rect.left-image1_width
            elif event.key == pygame.K_w:
                y -= speed[1]


                # 这个 if 判断 使图片在刚好完全进入窗体上方时转移到窗体下方
                if y <= s_top-image1_height:
                    y = s_bottom
            elif event.key == pygame.K_s:
                y += speed[1]


                # 这个 if 判断 使图片在刚好完全进入窗体下方时转移到窗体上方
                if y >= s_bottom:
                    y = s_top-image1_height


    s.fill((255,255,255)) # 填充背景色 (白)
    s.blit(image1,(x,y))  # 描绘我们载入的图片
    pygame.display.flip()  # 刷新屏幕

 

 

  我翻了一整天的文章,发现大多数移动图像的方式都有几个问题

    1.一旦动起来就停不下来了(除非,靠边),

    2.键盘只是决定移动的方向而不是决定是否移动,

    (另外我发现,........它们好像一个模子里刻出来的,有的人的变量都少了一部分)

    我这个版本没有以上问题

    我这个版本存在的问题是:(a左,d右,w上,s下)

     举例:先向左移动,按住a键不松,再按d键,图片会向右移动,但是松开d键,图片会不动(此时a键仍然未松开)

        我的解决思路是 : 加上对按键松开后的判断 当d键松开and a键按下时向左移动,

但是这只能解决左右方向上的,不能解决   上左,下左  ,等等   方向上的   , 用这个方法解决的话写的代码太多, 太繁琐

有没有大神有简单的方法

如果还有别的问题,欢迎指正,

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

将来怎么办

你的鼓励是我的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值