avg在python中的意思_一个简易的AVG游戏模板(python)

from tkinter import *

class Settings:

WIDTH = 800

HEIGHT = 600

class Game:

def init(self):

self.sm = StepMaster()

textPage = TextPage(["难忘的小事","long time ago","there's a little girl"])

textPage1 = TextPage(["suddenly a pig rushed out of the forest","then the pig hit a big tree and died","the hunter saw this.","He charried the dead pig to his village and feed his children."])

imgPage = ImgPage("figures/scene1.gif")

imgPage2 = ImgPage("figures/scene2.gif")

imgPage3 = ImgPage("figures/scene3.gif")

imgPage4 = ImgPage("figures/scene4.gif")

step0 = Step(textPage,imgPage,None)

step0.setConnections({"prev":0,"next":1})

self.sm.addStep(step0)

selBox = SelBox("which option will you choose?",["go back","kill it"])

step1 = Step(textPage,imgPage,selBox)

step1.setConnections({"prev":0,"next":-1,"1":0,"2":2})

self.sm.addStep(step1)

step2 = Step(None,imgPage2,None)

step2.setConnections({"prev":1,"next":3})

self.sm.addStep(step2)

step3 = Step(textPage1,imgPage2,None)

step3.setConnections({"prev":2,"next":4})

self.sm.addStep(step3)

selBox1 = SelBox("前方遭遇怪物,用什么职业出战?",["战士","法师","牧师","圣骑士"])

step4 = Step(textPage1,imgPage2,selBox1)

step4.setConnections({"prev":3,"next":-1,"1":5,"2":6,"3":4,"4":4})

self.sm.addStep(step4)

step5 = Step(None,imgPage3,None)

step5.setConnections({"prev":4,"next":5})

self.sm.addStep(step5)

step6 = Step(None,imgPage4,None)

step6.setConnections({"prev":4,"next":6})

self.sm.addStep(step6)

self.sm.start()

tk = Tk()

self.canvas = Canvas(tk,width=Settings.WIDTH,height=Settings.HEIGHT)

self.paint()

self.canvas.pack()

self.canvas.bind_all('',self.keyPressed)

self.canvas.bind_all('',self.keyPressed)

self.canvas.bind_all('',self.keyPressed)

self.canvas.bind_all('',self.keyPressed)

tk.mainloop()

def paint(self):

self.sm.paintCurrent(self.canvas)

self.canvas.pack()

def keyPressed(self,event):

print(event.keysym)

if event.keysym=="Left":

self.sm.leftKeyPressed()

elif event.keysym=="Right":

self.sm.rightKeyPressed()

elif event.keysym=="Up":

self.sm.upKeyPressed()

elif event.keysym=="Down":

self.sm.downKeyPressed()

self.paint()

class StepMaster:

def __init__(self):

self.current = -1

self.steps = []

def addStep(self,step):

self.steps.append(step)

def start(self):

self.current = 0

def paintCurrent(self,canvas):

currentStep = self.steps[self.current]

currentStep.paint(canvas)

def currentStep(self):

return self.steps[self.current]

def leftKeyPressed(self):

self.current = self.currentStep().prev()

def rightKeyPressed(self):

self.current = self.currentStep().next()

def upKeyPressed(self):

self.currentStep().up()

def downKeyPressed(self):

self.currentStep().down()

class Step:

def __init__(self,textPage,imgPage,selBox):

self.textPage = textPage

self.imgPage = imgPage

self.selBox = selBox

def setConnections(self,connections):

self.connections = connections

def paint(self,canvas):

if self.imgPage:

self.imgPage.paint(canvas)

if self.textPage:

self.textPage.paint(canvas)

if self.selBox:

self.selBox.paint(canvas)

def prev(self):

return self.connections["prev"]

def next(self):

if not self.selBox:

return self.connections["next"]

return self.connections[self.selBox.getChosen()]

def up(self):

if self.selBox:

self.selBox.optionUp()

def down(self):

if self.selBox:

self.selBox.optionDown()

class TextPage:

def __init__(self,contents):

self.contents = contents

def paint(self,canvas):

print("textpage painted")

j = Settings.HEIGHT*0.05

for line in self.contents:

canvas.create_text(0.5*Settings.WIDTH,j,text=line,fill="white")

j+=0.08*Settings.HEIGHT

class ImgPage:

def __init__(self,imgPath):

self.imgPath = imgPath;

def paint(self,canvas):

print("imgpage painted")

self.img = PhotoImage(file=self.imgPath)

canvas.create_image(0,0,anchor=NW,image=self.img)

class SelBox:

sbImg = None

def __init__(self,question,options):

self.question = question

self.options = options

self.chosen = 0

def paint(self,canvas):

print("selbox painted")

if not SelBox.sbImg:

SelBox.sbImg = PhotoImage(file = "figures/selbox.gif")

canvas.create_image(0,400,anchor=NW,image=SelBox.sbImg)

canvas.create_text(0.5*Settings.WIDTH,420,text=self.question)

j = 450+self.chosen*40

canvas.create_rectangle(0.1*Settings.WIDTH,j,0.9*Settings.WIDTH,j+20,fill="yellow")

j = 460

for option in self.options:

canvas.create_text(0.5*Settings.WIDTH,j,text=option)

j+=40

def getChosen(self):

return str(self.chosen+1)

def optionUp(self):

if self.chosen > 0:

self.chosen-=1

def optionDown(self):

if self.chosen < len(self.options) - 1:

self.chosen+=1

def main():

game = Game()

game.init()

main()

这个小程序是打算用于教学中的。学生只需要修改Game类的init方法,将定制的文本(TextPage),图片(ImgPage),还有选择栏(SelBox)组合成一个步(Step)对象,然后将Step交由StepMaster对象管理。Step对象需要设置步间跳转关系connecions,使得步与步之间可以有序跳转。

游戏的结构就是以步为基本单位,设置好跳转关系的步之间,可以根据SelBox的选项进行跳转,如当前步没有SelBox,则根据默认的翻页键跳转。

整个游戏就是一个交互式的电子小说,有图片,有文字,读者可以通过选择控制情节进展。

另:

1.文本默认是居中对齐,颜色为白色

2.图片必须是800*600的gif

3.选择栏选项一般不多于4个

4.音效模块并未实现

游戏界面:丑是丑了点,毕竟这么几行代码。。。(有同学能把界面调美观的直接满分~)

大小: 584.7 KB

分享到:

2014-09-02 09:03

浏览 1062

评论

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值