关于#python#的问题:我的一个程序它运行后与我想象中的不符合

我的一个程序它运行后与我想象中的不符合

import pygame
from pygame import locals

pygame.init()

screen=pygame.display.set_mode((250,250))
pygame.display.set_caption('推箱子')
clock=pygame.time.Clock()
people=pygame.image.load('人.png')
box=pygame.image.load('箱子.png')
dot=pygame.image.load('dot.png')

level=1
# 每关箱子数量x=2**level-1
# 到第四关时箱子数量到达最大15
boxes=1
# boxes_posi=[()]

while True:
    screen.fill((255,255,255))
    for event in pygame.event.get():
        if event.type==locals.QUIT:
            exit()
        elif event.type==locals.KEYDOWN:
            if event.key==locals.K_ESCAPE:
                exit()
    screen.blit(box,(450,100))
    
    clock.tick(30)
    pygame.display.update()

我的想法是 在坐标为(450,100)的位置出现一个大小为50x50的矩形
它的最终运行结果如下所示

img


注:程序正常运行,无报错!

你的窗口大小设置的太小了,窗口大小是(250, 250),但是你要把它绘制在(450, 100)处,结果就是绘制到外面去
应更改第6行,将窗口尺寸设置为一个较大的数字,比如:

screen=pygame.display.set_mode((500,250))

【相关推荐】



  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7695922
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:小说有广告?我用50行Python爬虫做了一个无广在线小说阅读器
  • 除此之外, 这篇博客: python3的各种经典案例,总共299个案例,直接可以运行(前:100个案例)中的 【例5】二分查找 难度等级★ 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    3.代码实现

    class Solution:
        #参数nums: 整数数组
        #参数target: 要查找的目标数字
        #返回值:目标数字的第一个位置,从0开始 
    	def binarySearch(self, nums, target):
    		return self.search(nums, 0, len(nums) - 1, target)
    	def search(self, nums, start, end, target):
    		if start > end:
    			return -1
    		mid = (start + end)//2
    		if nums[mid] > target:
    			return self.search(nums, start, mid, target)
    		if nums[mid] == target:
    			return mid
    		if nums[mid] < target:
    			return self.search(nums, mid, end, target)
    #主函数
    if __name__ == '__main__':
    my_solution = Solution()
        nums = [1,2,3,4,5,6]
        target = 3
        targetIndex = my_solution.binarySearch(nums, target)
        print("输入:nums =", nums, " ", "target =",target)
        print("输出:",targetIndex)
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

引用 皆我百晓生 小程序回复内容作答:
根据您提供的代码和描述,我注意到在您的程序中,在代码第20行,您加载了一个名为'箱子.png'的图片,并在第30行使用screen.blit()函数将该图片绘制在屏幕上的坐标(450, 100)处。然而,根据您的描述和期望的结果,您希望绘制一个大小为50x50的矩形。

要绘制一个矩形,您可以使用pygame.draw.rect()函数。您可以修改程序的代码如下来实现您的期望结果:

import pygame
from pygame import locals

pygame.init()

screen=pygame.display.set_mode((250,250))
pygame.display.set_caption('推箱子')
clock=pygame.time.Clock()
people=pygame.image.load('人.png')
dot=pygame.image.load('dot.png')

level=1
boxes=1
 
while True:
    screen.fill((255,255,255))
    for event in pygame.event.get():
        if event.type==locals.QUIT:
            exit()
        elif event.type==locals.KEYDOWN:
            if event.key==locals.K_ESCAPE:
                exit()
                
    pygame.draw.rect(screen, (0, 0, 255), pygame.Rect(450, 100, 50, 50))
    
    clock.tick(30)
    pygame.display.update()

在上述代码中,我删除了您加载的box图片,然后使用pygame.draw.rect()函数来绘制一个蓝色(0, 0, 255)的矩形,其左上角坐标为(450, 100),宽度为50,高度为50。

希望这可以帮助到您,让程序输出符合您的期望!