hy everyone, for my exam this year i had to write a computer game on vpython (visualpython).we had to make a lunar lander game where the ship drops by gravity and is able to manouver to safely land on the moon.<br>right now i am completely stuck on trying to make the visual of the ship rotate.<br>i'm new to this forum, i guess i'll just paste my code here. Everything works fine on the game, except the rotation of the ship. however the when you press "up" the after rotating the velocity actually changes direction , but the visual doesn't. i'm getting kinda nervous because due date is coming, any help is appreciated, here is the code:
from visual import * import time import math import random from datetime import datetime import operator class lunar_lander(object): def __init__(self): scene.title = 'mini star wars' scene.width = 375 scene.height = 550 scene.center = (0,0) self.pos = (0,0) self.axis = 0 self.brandstofmeter = brandstofmeter() self.ruimteschip = ruimteschip() self.view = game_view(self) def play(self): t=0 dt=0.01 while t<999999999: time.sleep(0.01) self.brandstofmeter.update self.ruimteschip.update(dt) t = t + dt class game_view(object): def __init__(self,owner): autoscale=True box(pos=( 0, -375, 0), length=500, height=5, width=0, color = color.white) box(pos=(0,375, 0), length=500, height=5, width=0, color = color.white) box(pos=(-250,0, 0), length=5, height=750, width=0, color = color.white) box(pos=(250,0, 0), length=5, height=750, width=0, color = color.white) maan = curve(pos=[(-250,-353),(-240,-341),(-210,-354),(-199.5,-374)],color=color.red) maana = curve(pos=[(-199.5,-374),(-166,-374)],color=color.green) maanb = curve(pos=[(-166,-374),(-140,-357),(-80,-319),(-40,-361),(0,-321),(40,-329),(80,-347)],color=color.red) maanc = curve(pos=[(80,-347),(140,-347)],color=color.green) maand = curve(pos=[(140,-347),(162,-337),(189.5,-365),(210,-355),(240,-372),(250,-338)],color=color.red) for i in random.sample(range (-250,250),20): for j in random.sample(range (-375,375),20): sterren = points(pos = [i,j,0],size = 2, color=color.white) class brandstofmeter(object): def __init__(self): self.size = (25,45) axis = 0 self.pos = (220,345) self.view = brandstofmeter_view(self) def update(self): while True: if scene.kb.keys: s = scene.kb.getkey() if (s == 'up'): self.view.update(self) class brandstofmeter_view(object): def __init__(self,owner): self.owner = owner meter = box(pos = owner.pos,size = owner.size,color = color.green) def update (self,owner): self.size = self.size - (0,0.45) class ruimteschip(object): def __init__(self): self.pos = vector(0,330) self.acceleration = vector(0,-88,0) self.axis = (1,0,0) self.hoek = (90*math.pi)/180 self.graden = math.degrees(self.hoek) self.gas = vector(10 * cos(self.hoek),10 * sin (self.hoek)) self.velocity = vector(0,0,0) self.angle = (1,0,0) self.view = ruimteschip_view(self) self.vlam = self.view.vlam self.frame = self.view.frame def update(self,dt): self.velocity = self.velocity + (self.acceleration * dt) self.pos = self.pos + self.velocity * dt a = 0 b = 0 if scene.kb.keys: a = a + 0.001 s = scene.kb.getkey() if (s == "up"): self.velocity = self.velocity + self.gas self.vlam.visible = True b = b + 2 if (s == "left"): self.gas = rotate(self.gas,angle = math.pi/10, axis = (0,0,1)) c = list(self.frame.axis) c[2] -= 0.1 c = tuple(c) c = self.frame.axis if (s == "right") : self.gas = rotate(self.gas,angle = -(math.pi/10), axis = (0,0,1)) c = list(self.frame.axis) c[2] += 0.1 c = tuple(c) c = self.frame.axis if (a == 0): self.vlam.visible = False if self.pos.x > 250: self.pos.x = -250 if self.pos.x < -250: self.pos.x = 250 self.view.update(self) class ruimteschip_view(object): def __init__(self,owner): self.owner = owner self.frame = frame(pos = owner.pos,axis = owner.axis) self.motor = curve(frame = self.frame,pos=[(0,24.0),(22.0,24.0),(22.0,39.0),(-22.0,39.0),(-22,24),(0,24)]) self.capsule = curve(frame = self.frame,color = color.blue ,pos=[(0,39),(-3,39),(-9,44),(-12,46),(-18,48),(-22,50),(-18,52),(-12,54),(-9,56),(-3,61),(0,61),(3,59),(9,56),(12,54),(18,52),(22,50),(18,48),(12,46),(9,44),(3,39),(0,39)]) self.poota = curve(frame = self.frame,pos = [(-18,24),(-20,24),(-20,0),(-18,0),(-18,24)]) self.pootb = curve(frame = self.frame,pos = [(18,24),(20,24),(20,0),(18,0),(18,24)]) self.vlam = curve(frame = self.frame,color = color.orange , visible=false,pos = [(0,24.0),(-9.0,14.0),(0,-5.0),(9,14.0),(0,24.0)]) def update(self,owner): self.frame.axis = owner.axis self.frame.pos = owner.pos -- http://mail.python.org/mailman/listinfo/python-list