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 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" def draai_links(self): # code self.hoek = self.hoek + pi/22.0 # self.view.draai(pi/22.0) def draai_rechts(self): # code 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): # code 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(self): # code dt= 0.01 self.view.verplaats(dt) def is_gecrashed_of_geland(self): return False self.view.update()# dt tussen haakjes weggedaan class Lander_View(object): def __init__(self,owner): self.owner = owner self.frame = frame () curve(frame, pos=[(-11,17),(-8,17),(-8,15),(-11,15),(-11,17)], radius = 0, color= color.white)# rechthoek curve(frame, pos=[(-10,17),(-11,18),(-10,19),(-9,19),(-8,18),(-9,17)], radius =0, color = color.white)# bovendeel curve(frame, pos=[(-11,16),(-12,14),(-10,15)], radius =0, color = color.white)#linkerpoot curve(frame, pos=[(-8,16),(-7,14),(-9,15)], radius =0, color = color.white)#rechterpoot curve(frame, pos=[(-12.5,14),(-11.5,14)], radius =0, color = color.white)#linkerpoot curve(frame, pos=[(-7.5,14),(-6.5,14)], radius =0, color = color.white)#rechterpoot curve(frame, pos=[(-10,15),(-9.5,12),(-9,15)], radius=0, visible= False)# vlam curve(frame, 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): # code 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() # maanoppervlak 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() ## def brandstof(self, dt): ## x= 10000 ## if s =='left' or s == 'right': ## x= x - 100*dt ## else: ## x=x ## if x <= 0: ## if s == 'up':update ## return None