在电子游戏开发中,我们可以看到角色向前移动,但是它的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资源。)

