上次我们已经开发完首页了,这次我们先把主程序开发一下吧,我们要做的是一个赛车类游戏(开发完之后作者可能会发源码)
教程与代码 精灵
精灵就是游戏角色,学过pygame的人应该都认识。精灵和图片、图形不一样,他的特征如下
- 精灵是用pyglet.sprite.Sprite定义的
- 精灵是游戏角色
- 精灵需要一个图片
下面我们定义一个最简单的精灵
import pyglet as p
win = p.window.Window(200,200,'精灵')
spimg = p.image.load('cat.png',x=100,y=100)
sp = p.sprite.Sprite(img=spimg)
@win.event
def on_draw():
win.clear()
sp.draw()
p.app.run()
我们把这个精灵显示到了屏幕上,显示精灵的函数与文字一样,如果想设置精灵的位置,就需要在精灵的图片上加两个参数,一个是x,一个是y。
键盘
所有游戏都有一个键盘事件,键盘事件可以监听键盘动作。键盘事件也是pyglet事件的一种,其格式如下
@<窗口变量名称>.event
def on_key_press(symbol, modifiers):
<键盘按下之后的代码>
这里的symbol是按下的键,modifires是附加键,这里做一个简单的实例
import pyglet as p
win = p.window.Winodw(200,200,'键盘事件')
@win.event
def on_key_press(symbol,modifires):
print('你按下了{symbol}键')
p.app.run()
下面详细的讲一下这两个参数
symbol返回的是pyglet.window.key里面的值,如下:
字母
key.A
数字
key._1
控制键
key.ENTER or key.RETURN
key.SPACE
key.BACKSPACE
key.DELETE
key.MINUS
key.EQUAL
key.BACKSLASH
小键盘key.NUM_1
key.NUM_2
key.NUM_EQUAL
key.NUM_DIVIDE
key.NUM_MULTIPLY
key.NUM_SUBTRACT
key.NUM_ADD
key.NUM_DECIMAL
key.NUM_ENTER
modifires返回的是pyglet.window.key里的附加键值,如下
key.LCTRL
key.RCTRL
key.LSHIFT
key.RSHIFT
让精灵移动
让游戏角色移动很简单,只需要改变它的x和y坐标就行了,修改格式如下:
#修改x坐标
<精灵变量名称>.x = <修改之后的x坐标>
#修改y坐标
<精灵变量名称>.y = <修改之后的y坐标>
接下来做一个让猫移动的实例
import pyglet as p
win = p.window.Window(200,200,'让猫移动')
catimg = p.image.load('cat.png')
catsp = p.sprite.Sprite(catimg)
@win.event
def on_draw():
win.clear()
catsp.draw()
while True:
for i in range(10):
catsp.x += 1
for i in range(10):
catsp.y += 1
p.app.run()
我们首先定义了一个catsp精灵,然后重复让它向前移动、向上移动,就成功的控制了这个精灵移动
代码
今天我们先做
import pyglet as p
w = p.window.Window(400,300,’小游戏’)
i1 = p.image.load('首页ui.png')
t1 = p.text.Lable(‘小游戏’,x=150,y=200)
bt1 = p.text.Lable(‘开始’,x = 200,y = 150)
bbg1 = p.shapes.Rectangle(x=200,y=150,width=50,height=30,color=(128,128,128))
def play():bg = p.image.load('背景.png')
carimg = p.image.load('汽车1.png',x=100)carsp = p.spirte.Spirte(carimg)
@win.event
def on_draw():
bg.blit(0,0)
carsp.draw()
@win.event
def on_key_press(symbol,modifires):
if symbol == key.W or symbol == key.UP:
carsp.y += 1
if symbol == key.S or symbol == key.DOWN:
carsp.x += 1
@w.event
def on_draw():
w.clear()
i1.blit(0,0)
t1.draw()
t2.draw()
bt.draw()
bbg.draw()
@w.event
def on_mouse_press(x,y,button,modifires):if x == bt.x and y== bt.y:
play()
p.app.run()



