problem with exam task for college

jeltedeproft at hotmail.com jeltedeproft at hotmail.com
Sun Jan 13 14:57:41 CET 2013


this is again a newer version, right now the velocity does in fact turn, but the view doesn't follow, it keeps the ship vertical.

i'm also having trouble letting the flame appear when pressing the "up" button

and when the ship rotates the horizontal velocity keeps getting bigger and bigger

i also have to make the game end when the ship hits the moon on the wrong place

i'm kinda stressed out because this has to be done by the 15th i've been studying like crazy the past week. If anyone could help me out i will deeply appreciate it, 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
        self.ruimteschip.updatemeter = False
        while t<999999999:
            time.sleep(0.01)
            self.ruimteschip.update(dt)
            t = t + dt
            if self.ruimteschip.updatemeter == True:
                self.brandstofmeter.update
                
                

            
            
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):
        axis = 0
        self.pos = (210,345)
        self.length = 25
        self.height = 45
        self.meter = box(pos = self.pos, length = self.length, height = self.height,color = color.green)
    def update(self):
        self.height = self.height - 0.2
        print "ok"
        
                    
                    
        
class ruimteschip(object):
    def __init__(self):
        self.pos = vector(0,330)
        self.acceleration = vector(0,-20,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 = pi / 2
        self.updatemeter = False
        self.view = ruimteschip_view(self)
        self.vlam = self.view.vlam
        self.frame = self.view.frame
        self.zicht = brandstofmeter()
        
        

    def update(self,dt):
        self.velocity = self.velocity + (self.acceleration * dt)
        self.pos = self.pos + self.velocity * dt
        print self.velocity
        
        if scene.kb.keys:
            key = scene.kb.getkey()
            if key == "left":
                # linkerafwijking
                self.frame.axis -= (0, 0, 0.05)
                self.gas = vector(-sin(self.angle), cos(self.angle))
                self.vlam.visible = True
                self.updatemeter = True

            elif key == "right":
                # rechterafwijking
                self.frame.axis += (0, 0, 0.05)
                self.gas = vector(sin(self.angle), cos(self.angle))

            elif key == "up":
                self.velocity += self.gas
                self.frame.pos += self.velocity
        else:
            self.vlam.visible = False
            self.updatemeter = False
            self.velocity -= self.gas

        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, velocity = owner.velocity)
        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
        self.frame.velocity = owner.velocity
        

                          



More information about the Python-list mailing list