栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

跟苏朗写游戏(3)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

跟苏朗写游戏(3)

前言

上次我们已经开发完首页了,这次我们先把主程序开发一下吧,我们要做的是一个赛车类游戏(开发完之后作者可能会发源码)


教程与代码 精灵

精灵就是游戏角色,学过pygame的人应该都认识。精灵和图片、图形不一样,他的特征如下

  1. 精灵是用pyglet.sprite.Sprite定义的
  2. 精灵是游戏角色
  3. 精灵需要一个图片

下面我们定义一个最简单的精灵

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()

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号