设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Pygame 第5课】 游戏中的运动

[复制链接]

0

主题

1

好友

34

积分

新手上路

Rank: 1

楼主
发表于 2019-12-17 14:08:38 |显示全部楼层
先生教我,
问题:子弹太长了。。。。求教,原因出在哪里
[img][/img] 问题图片.png

代码:
# -*- coding: utf-8 -*-
import pygame
#导入pygame
from sys import exit
import time
#sys模块借一个exit函数用来退出程序
pygame.init()
#初始化pygame,为使用硬件做准备
screen = pygame.display.set_mode((600, 419), 0, 32)
#创建了一个窗口,窗口大小和背景图片大小一样
pygame.display.set_caption("Hello, hahaha!")
#设置窗口标题
pic_a='pygame_pic.png'
pic_b='pygame_pic2.png'
pic_c='pygame_pic3.jpg'
pic_all=[pic_a,pic_b,pic_c]
pic_num=3
background = pygame.image.load(pic_all[pic_num%3]).convert()
plane = pygame.image.load('plane.png').convert_alpha()
bullet=pygame.image.load('bullet.png').convert_alpha()
x_bullet = 0
y_bullet = -1
while True:
#游戏主循环

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            pic_num+=1
            background = pygame.image.load(pic_all[pic_num%3]).convert()
            width=background.get_width()
            height=background.get_height()
            screen = pygame.display.set_mode((width, height), 0, 32)
        screen.blit(background, (0, 0))
    x, y = pygame.mouse.get_pos()
    # 获取鼠标位置
    # 计算飞机的左上角位置
    if y_bullet < 0:
        x_bullet = int(x - bullet.get_width()/2)
        y_bullet = int(y - bullet.get_height()/2)
    else:
        y_bullet -= 0.2
    screen.blit(bullet, (x_bullet, y_bullet))  # 把子弹画到屏幕上
    x -= int(plane.get_width() / 2)
    y -= int(plane.get_height() / 2)
    screen.blit(plane, (x, y))  # 将背景图画上去
    #加载并转换图像
    pygame.display.update()#刷新一下画面
回复

使用道具 举报

0

主题

1

好友

34

积分

新手上路

Rank: 1

沙发
发表于 2019-12-17 14:31:24 |显示全部楼层
PMCoding 发表于 2019-12-17 14:08
先生教我,
问题:子弹太长了。。。。求教,原因出在哪里
[/img]

看了前面的同学反馈,好像是帧率的问题,运行其他同学的双发子弹的代码,子弹射出来很顺畅,我的代码原地射出来就是一条线,换个地方之前的子弹那条线还在
回复

使用道具 举报

0

主题

1

好友

34

积分

新手上路

Rank: 1

板凳
发表于 2019-12-17 16:32:02 |显示全部楼层
crossin先生 发表于 2019-12-17 16:06
screen.blit(background, (0, 0))

这句话的缩进不对,导致背景没有重绘制

gotta,谢谢~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-7 00:08 , Processed in 0.027847 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部