Links und Funktionen
Sprachumschaltung

Navigationspfad


Inhaltsbereich

Top Gun (Beta-Build 2)

2.Fenster 2. Jet bewegt sich beide Beschleunigung und Bremsung

Top Gun Singleplayer.py — text/python-source, 6 KB (6579 bytes)

Dateiinhalt

# -*- coding: utf-8 -*-
from visual import *
from threading import Thread

projectname = 'Top Gun für Arme'
projectstatus = 'Singleplayer 0.1'

scene.title = projectname+' '+projectstatus # Fenstertitel
scene.x = 0	                            # Fensterpos v. links
scene.y = 0	                            # Fensterpos v. oben
scene.height = 480                          # Fensterhöhe
scene.width = 640                           # Fensterbreite
scene.range = (1,1,1)                       # Abstand
scene.center = (0,5,10)                     # Festlegung Blickziel
scene.userspin = True
scene.userzoom = True
scene.background = (0.8,0.85,1)             # Farbe Hintergrund
scene.stereodepth = 2                       # Stereotiefe
scene.show_rendertime = True                # Anzeige der Berechnungszeiten
scene.fullscreen = False                    # Vollbildmodus


b1=box(pos=(10,0,-100),color=color.red)         #Boxen im 1.Fenster
b2=box(pos=(-10,0,-500),color=color.red)        

scene2 = display(title = projectname+' '+projectstatus,
                 x=640,
                 y=0,
                 width =640,
                 height =480,
                 userzoom= scene.userzoom,
                 userspin= scene.userspin,
                 range=scene.range,
                 stereodepth= scene.stereodepth,
                 sichtx = scene.x,
                 sichty=scene.y,
                 center = scene.center,
                 background=(0,0,0))

b3=box(pos=(10,0,-100)) #Boxen im 2.Fenster
b4=box(pos=(-10,0,-500))

def xgeben (frame, local):
    x_axis = norm(frame.axis)
    z_axis = norm(cross(frame.axis, frame.up))
    y_axis = norm(cross(z_axis, x_axis))
    return x_axis

def ygeben (frame, local):
    x_axis = norm(frame.axis)
    z_axis = norm(cross(frame.axis, frame.up))
    y_axis = norm(cross(z_axis, x_axis))
    return y_axis

def zgeben (frame, local):
    x_axis = norm(frame.axis)
    z_axis = norm(cross(frame.axis, frame.up))
    y_axis = norm(cross(z_axis, x_axis))
    return z_axis

class Bullet(Thread, frame):
    def __init__(self, p=(0,0,0), axis=(0,0,0)):
        Thread.__init__(self)
        frame.__init__(self, pos=p, axis = (0,0,1))
        self.jacket = sphere(radius=(0.1), pos=self.pos+vector(0,5,0), frame=self)
        self.v = vector(0,0,-1)

    def fly (self):
        self.pos = self.pos+self.v
        

class Jet (Thread, frame):
    def __init__(self, p=(0,0,0), axis=(0,0,0), c=color.white, leading=true):
        Thread.__init__(self)
        frame.__init__(self, pos=p, axis = (0,0,1))
        self.achse = vector(0,0,1)
        self.body = cylinder(radius = 2, axis=(-10,0,0), pos=(0,0,0), material=materials.wood, color=c, frame=self)
        self.wing = box (length=3, height=1, width=15, pos=(-6,0,0), material=materials.wood, color=c, frame=self)
        self.bullets = [Bullet]
        self.bulletMax = 40
        self.health = 100
        self.ztest = zgeben(self, self.body)
        self.xchange = 0
        self.ychange = 0
        self.zchange = 0
        self.v = vector(0,0,-1)
        self.t = 0.0

    def fly (self):
        vvec = vector(self.xchange,self.ychange,self.zchange)
        self.pos = self.pos+self.v+vvec # Jet-Bewegung
        print self.pos

    def nose (self, positive):
        self.t = self.t+0.1
        if positive == True:
            self.ychange = sin(self.t)
            self.rotate(angle = -0.1*(pi/3), axis = zgeben(self, self.body), origin = self.body.pos+vector(0,0,6))
        else:
            self.ychange = -sin(self.t)
            self.rotate(angle = 0.1*(pi/3), axis = self.ztest, origin = self.body.pos+vector(0,0,6))
            print self.ztest
        
    def roll(self, vturn):
        self.rotate(angle = vturn, axis=self.axis)

    def shoot (self):
        if len(self.bullets) < self.bulletMax:
            self.bullets.append(Bullet(axis=self.axis))
        else:
            print 'LADE NACH!'
            del self.bullets
            self.bullets = [Bullet]
            
        
if __name__ == "__main__":
    print 'Initializing "',projectname,' ', projectstatus
    print 'By Darko Jankovic & Felix Schneider'
    print 'LMU Probestudium Informatik 2012'
    print '-------------------------------------------'
    print 'Initializing scene 1...'
    scene.select()
    j1 = Jet()
    j2 = Jet(p=(0,0,-12), c=(0.5,0.5,0.5))
    print '...successful! Initializing scene 2...'
    scene2.select()
    j1b = Jet()
    j2b = Jet(p=(0,0,-12), c=(0.5,0.5,0.5))
    scene.select()  
    print '...successful!'
    print '-------------------------------------------'
    print 'Press the any key to start the game!'
    
    if scene.kb.getkey() > 0: # hier Abfrage nach dem Any-Key
        running = True

    while running == True:
        key = scene.kb.getkey()
        rate(50)
            
        print 'Leben: ',str(j1.health),'| Munition: ',str(j1.bulletMax-(len(j1.bullets)-1))

        
        if key == '.' and mag(j1.v)<4.0: #Beschleunigung Jet1
            j1.v = j1.v*1.1
            j1b.v = j1.v
        elif key == ',' and mag(j1.v)>0.5:  #Bremsung Jet1
            j1.v = j1.v*0.9
            j1b.v = j1.v
        elif key == 'm' and mag(j1.v)<4.0 and mag(j1.v)>0.5:
            j1.v = 1.0
            j1b.v= 1.0
        elif key == 'n':
            j2.v = 1.0
            j2b.v = 1.0
        elif key == 'left':                   #Rollen Jet1 nach links
            j1.roll(vturn=pi/90)
            j1b.roll(vturn=pi/90)
        elif key == 'right':                #Rollen Jet1 nach rechts
            j1.roll(vturn=-pi/90)
            j1b.roll(vturn=-pi/90)
        #if key == 'up':
         #   j1.nose(-0.1)
          #  j1b.nose(-0.1)
        elif key == 'c':
            j1.shoot()
            
                                #Beschleunigung Jet2
        elif key == 'u' and mag(j2b.v)<4.0:     #Beschleunigung Jet2
            j2.v=j2.v*1.1
            j2b.v=j2.v
            
        elif key== 'j' and mag(j2b.v)>0.5:      #Bremse Jet2
            j2.v = j2.v*0.9
            j2b.v = j2.v
            
        elif key == 'h':                        # Rollen Jet2 nach links
        
            j2.roll(vturn=pi/90)
            j2b.roll(vturn=pi/90)

        elif key == 'k':                        #Rollen Jet2 nach rechts
            j2.roll(vturn=-pi/90)           
            j2b.roll(vturn=-pi/90)


        scene.center+=j1.v
        scene2.center+=j2.v
        j1.pos = j1.pos+j1.v
        j2.pos = j2.pos+j2.v
        j1b.pos = j1b.pos+j1b.v
        j2b.pos = j2b.pos+j2b.v

        print mag(j1.v), mag(j2.v)

Funktionsleiste