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

Reply via email to