from visual import * import math as m # import datetime as dt import time # -*- coding: cp1252 -*- g= - 1.6/100 pi = m.pi dt = 0.01 class Moon_Lander_Game(object): def __init__(self): self.size = 20.0 self.lander = Lander(self) self.game_items = [self.lander ] #self.view = Game_View(self) self.gedaan = False f = frame () self.view = f self.frame = frame() curve(frame=f, pos=[(-20,-20),(-17,-17)], radius = 0, color = color.red) curve(frame=f, pos=[(-17,-17),(-9,-17)], radius = 0, color= color.green) curve(frame=f, pos=[(-9,-17),(-6,-18),(-2,-15),(2,-17)], radius = 0, color = color.red) curve(frame=f, pos=[(2,-17),(10,-17)], radius = 0, color = color.green) curve(frame=f, pos=[(10,-17),(15,-19),(18,-15),(20,-20)], radius = 0, color = color.red) def play_nieuw(self): while not self.gedaan: self.lander.wordt_aangetrokken() self.lander.verplaats() self.gedaan = self.lander.is_gecrashed_of_geland() self.verwerk_toetsenbord_invoer() #print "begin" def verwerk_toetsenbord_invoer(self): if scene.kb.keys: toets = scene.kb.getkey() if toets == "left": self.lander.draai_links() elif toets == "right": self.lander.draai_rechts() elif toets == "up": self.lander.geef_gas() else: print "ongebruikte toets" class Lander(object): def __init__(self, game): self.game = game self.velocity= vector(0,0) self.acceleration= vector(0,g) self.hoek = pi/2.0 self.axis = vector(1,0) self.state = True #self.view = Lander_View(self) self.brandstof = 100 print "1" self.positie= vector(0,0) f = frame () self.frame = frame() frame.positie = self.positie curve(frame=f, pos=[(-11,17),(-8,17),(-8,15),(-11,15),(-11,17)], radius = 0, color= color.white)# rechthoek curve(frame=f, pos=[(-10,17),(-11,18),(-10,19),(-9,19),(-8,18),(-9,17)], radius =0, color = color.white)# bovendeel curve(frame=f, pos=[(-11,16),(-12,14),(-10,15)], radius =0, color = color.white)#linkerpoot curve(frame=f, pos=[(-8,16),(-7,14),(-9,15)], radius =0, color = color.white)#rechterpoot curve(frame=f, pos=[(-12.5,14),(-11.5,14)], radius =0, color = color.white)#linkerpoot curve(frame=f, pos=[(-7.5,14),(-6.5,14)], radius =0, color = color.white)#rechterpoot curve(frame=f, pos=[(-10,15),(-9.5,12),(-9,15)], radius=0, visible= False)# vlam curve(frame=f, pos=[(-12.5,14),(-6.5,14),(-8,19),(-11,19),(-12.5,14)], radius=0, visible= False)# kader def draai_links(self): self.hoek = self.hoek + pi/22.0 # self.view.draai(pi/22.0) def draai_rechts(self): self.hoek = self.hoek + pi/22.0 #self.view.draai(-pi/22.0) def wordt_aangetrokken(self): self.velocity = self.velocity + (self.acceleration*dt) def geef_gas(self, dt): self.velocity = self.velocity + bereken_versnelling_motor() * dt def bereken_versnelling_motor(self, hoek): if draai_links == True or draai_rechts == True: return vector(cos(self.hoek), sin(self.hoek))*2 else: return None ## def verplaats_2(self): ## # code ## dt= 0.01 ## self.view.verplaats(dt) def is_gecrashed_of_geland(self): return False self.update()# dt tussen haakjes weggedaan def verplaats(self): self.frame.pos = self.frame.positie + self.velocity def update (self): self.positie = frame.pos self.acceleration = self.acceleration self.positie =self.positie + self.velocity *dt print '2' ##class Lander_View(object): ## def __init__(self,owner): ## self.owner = owner ## # self.frame = frame() ## f = frame () ## curve(frame=f, pos=[(-11,17),(-8,17),(-8,15),(-11,15),(-11,17)], radius = 0, color= color.white)# rechthoek ## curve(frame=f, pos=[(-10,17),(-11,18),(-10,19),(-9,19),(-8,18),(-9,17)], radius =0, color = color.white)# bovendeel ## curve(frame=f, pos=[(-11,16),(-12,14),(-10,15)], radius =0, color = color.white)#linkerpoot ## curve(frame=f, pos=[(-8,16),(-7,14),(-9,15)], radius =0, color = color.white)#rechterpoot ## curve(frame=f, pos=[(-12.5,14),(-11.5,14)], radius =0, color = color.white)#linkerpoot ## curve(frame=f, pos=[(-7.5,14),(-6.5,14)], radius =0, color = color.white)#rechterpoot ## curve(frame=f, pos=[(-10,15),(-9.5,12),(-9,15)], radius=0, visible= False)# vlam ## curve(frame=f, pos=[(-12.5,14),(-6.5,14),(-8,19),(-11,19),(-12.5,14)], radius=0, visible= False)# kader ## f.axis = self.axis #frame.pos = (10,10) ## def verplaats(self, dt): ## self.frame.pos = self.frame.positie + self.owner.velocity # def draai(self, hoek): ## def update (self): ## self.positie = frame.pos ## self.acceleration = self.owner.acceleration ## self.positie =self.positie + self.owner.velocity *dt ## print '2' ##class Game_View(object): ## def __init__(self, owner): ## self.owner = owner ## ## self.frame = frame() ## curve(frame=f, pos=[(-20,-20),(-17,-17)], radius = 0, color = color.red) ## curve(frame=f, pos=[(-17,-17),(-9,-17)], radius = 0, color= color.green) ## curve(frame=f, pos=[(-9,-17),(-6,-18),(-2,-15),(2,-17)], radius = 0, color = color.red) ## curve(frame=f, pos=[(2,-17),(10,-17)], radius = 0, color = color.green) ## curve(frame=f, pos=[(10,-17),(15,-19),(18,-15),(20,-20)], radius = 0, color = color.red) ## # self.body = f ## ## side = owner.size ## thk = 0.1 ## s2 = 2*side - thk ## s3 = 2*side + thk ## box(pos=( side, 0, 0), length=thk, height=s2, width=0, color = color.blue) ## box(pos=(-side, 0, 0), length=thk, height=s2, width=0, color = color.blue) ## box(pos=(0, -side, 0), length=s3, height=thk, width=0, color = color.blue) ## box(pos=(0, side, 0), length=s3, height=thk, width=0, color = color.blue) ## scene.background = (0,0,0) # tussen haakjes is de kleur nieuw_spel = Moon_Lander_Game() nieuw_spel.play_nieuw()