在电子游戏开发中,我们可以看到角色向前移动,但是它的x坐标并没有改变,这都是由于相对运动所导致的。实际上是背景图片在向后移动。
下面是版本一,用纯粹的turtle模块制作的.
""" turtle版向后滚动的背景.py 本程序把两个和屏幕大小一样的海龟对象, 错开屏幕宽度的距离,以实现向后滚动效果。 """ import time from turtle import Turtle,Screen,TK,Shape w,h = 480,360 screen = Screen() screen.tracer(0,0) screen.setup(480,360) screen.title('turtle版向后滚动的背景by李兴球') bg = TK.PhotoImage(file='1.png') sp = Shape('image',bg) # 新建造型 screen.addshape('bg',sp) # 把造型注册到屏幕 bg1 = Turtle(shape='bg') # 新建背景1 bg1.penup() # 背景1抬笔 bg1.speed(0) bg2 = bg1.clone() # 克隆背景1为bg2 bg2.setx(w) # 错位bg2 while 1: pass
下面是有tkinter制作的版本。
""" tkinter版向后滚动的背景.py 本程序在画布上新建两张图片, 并且使它们错开画布的一个宽度距离, 通过画布的move方法移它们,从而实现滚动背景效果。 """ import time from tkinter import * from PIL import Image,ImageTk root = Tk() root.title('kinter版向后滚动的背景by李兴球') w,h = 480,360 cv = Canvas(width=w,height=h) # 新建画布 cv.pack() bgpic = Image.open('1.png') bgpic = ImageTk.PhotoImage(bgpic) bg1 = cv.create_image((w/2,h/2),image=bgpic) # 创建图像bg1 bg2 = cv.create_image((1.5*w,h/2),image=bgpic) # 创建图像bg2 while True: pass
下面是用gameturtle模块制作的版本,此版本制作的代码最简单,最好理解。
""" gameturtle版向后滚动的背景.py 本程序新建两个角色,通过错开一个画布宽度的范围, 从而实现向后滚动的背景效果。 """ from gameturtle import * root = Tk() root.title('gameturtle版向后滚动的背景by李兴球') w,h = 480,360 cv = Canvas(width=w,height=h) cv.pack() bgpic = Image.open('1.png') bg1 = GameTurtle(cv,bgpic) # 新建背景1(默认在中间) bg2 = GameTurtle(cv,bgpic,pos=(1.5*w,h/2)) # 新建背景2 while True: bg1.addx(-2) # 背景1的x坐标减小 if bg1.xcor() <= -w/2:bg1.setx(1.5*w) bg2.addx(-2) if bg2.xcor() <= -w/2:bg2.setx(1.5*w) # 背景2的x坐标减小 cv.update() # 更新画布显示 time.sleep(0.01)
需要以上三个程序完整源代码,及相关素材请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)
发表评论