已有184人关注
代码好像没码错,但背景图就是没出来,求老师、求前辈指教
发表在Python图书答疑 2020-11-09 《Python项目开发案例集锦》第4章 玛丽冒险
是否精华
版块置顶:

看着书打出来的代码,背景图bg.png也放在image文件夹,但运行程序就是不行  对比下载源代码,好像也没错

#定义一个移动地图类

class MyMap():


    def __init__(self , x , y):

        #加载背景图片

        self.bg = pygame.image.load("image/bg.png").convert_alpha()

        self.x = x

        self.y = y

        

    def map_rolling(self):

        if self.x < -790:     #少于-790说明地图已经完全移动完毕

            self. x = 800     #给地图一个新的坐标点

        else:

            self.x -= 5      #向左移动5个像素



    #更新地图

    def map_update(self):

        SCREEN.blit(self.bg, (self.x , self.y))

4.png


分享到:
精彩评论 4
无语_mrkj
学分:3155 LV11
2020-11-10
沙发

您再看一下源码,还应该加上更新背景和更新整个窗口的代码,例如下面的代码:

bg1.map_update()

pygame.display.update()  


天极之矢
学分:3239 LV11
2020-11-17
板凳

无语_mrkj 发表于2020-11-10 10:00

您再看一下源码,还应该加上更新背景和更新整个窗口的代码,例如下面的代码:

bg1.map_update()

pygame.display.update()  


123.png


你说的那两个代码也有的,就是没有复制过来, 我跟着书本输入代码,但背景图就是不出来


import pygame                      #导入pygame模块

from pygame.locals import*         #导入pagame中的常量

import sys                         #导入系统模块


SCREENWIDTH = 822                  #窗口宽度

SCREENHEIGHT = 199                 #窗口高度

FPS = 30



def mainGame():

    score  = 0      #得分

    over = False     #游戏结束标记

    global SCREEN, FPSCLOCK

    pygame.init()    #进过初始化以后我们就可以尽情地使用pygame

    #使用Python时钟控制每个循环多长时间运行一次,在使用始终前必须先创建Clock对象的一个实例

    FPSCLOCK = pygame.time.Clock()    

    #通常来说我们需要先创建一个一个窗体,方便我们与程序互动

    SCREEN = pygame.display.set_mode((SCREENWIDTH,SCREENHEIGHT))

    pygame.display.set_caption('玛丽冒险')     #设置窗口标题

    while True:

        #获取单击事件

        for event in pygame.event.get():

            #如果单击了关闭窗体就讲窗体关闭

            if event.type == QUIT:

                pygame.quit()      #退出窗口

                sys.exit()         #关闭窗口

        pygame.display.update()    #更新整个窗体

        FPSCLOCK.tick(FPS)         #循环应该多长时间运行一次

if __name__ =='__main__':

    mainGame()




#定义一个移动地图类

class MyMap():


    def __init__(self , x , y):

        #加载背景图片

        self.bg = pygame.image.load("image/bg.png").convert_alpha()

        self.x = x

        self.y = y

        

    def map_rolling(self):

        if self.x < -790:     #少于-790说明地图已经完全移动完毕

            self. x = 800     #给地图一个新的坐标点

        else:

            self.x -= 5      #向左移动5个像素



    #更新地图

    def map_update(self):

        SCREEN.blit(self.bg, (self.x , self.y))



#创建地图对象

bg1 = MyMap(0,0)

bg2 = MyMap(800,0)


if over == False:

    #绘制地图,起到更新地图的作用

    bg1.map_update()

    #地图移动

    bg1.map_rolling()

    bg2.map_update()

    bg2.map_rolling()


无语_mrkj
学分:3155 LV11
2020-11-25
地板

那您可以把源码中的内容按照现在进行的步骤进行逐步删除,然后看看具体是哪里出现了问题。

天极之矢
学分:3239 LV11
2020-12-30
4L

无语_mrkj 发表于2020-11-25 11:03

那您可以把源码中的内容按照现在进行的步骤进行逐步删除,然后看看具体是哪里出现了问题。

代码没错,好像是搞错位置,全部代码写完后,才出现背景图,只有那一段就不出,还是感谢前辈指点

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照