jakob2
jakob5.py — text/python-source, 9 KB (9760 bytes)
Dateiinhalt
# astroid
# Einbinden des 3D-Moduls
from visual import *
from math import *
from random import *
import time
# Szene-Einstellungen
scene.userzoom = True # User darf zoomen?
scene.userspin = True # User darf rotieren?
scene.forward = (0,0,-1) # Kameraposition
scene.autoscale = False # Autoskalierung aktiv?
scene.range = 12 # Kameraabstand von scene.center
scene.center = (0,0,0) # Kamerablickpunkt: norm. (0,0,0)
scene.up = (0,1,0) # Rotationsachse Kamera: norm. (0,1,0)
scene.background = color.black # Hintergrundfarbe
scene.fov = 1 # Kamerawinkeloeffnung: norm. 1
scene.fullscreen = true # Vollbild? norm. False
scene.title = "Koordinaten" # Fenstertitel
scene.width = 200 # Fensterbreite: norm. 200
scene.height = 200 # Fensterhoehe: norm 200
scene.x = 50 # x-Koordinate d. Fensters: norm. 0
scene.y = 25 # y-Koordinate d. Fensters: norm. 0
#frame()=gruppe
#class Name: def __init__(varaiblen):
#loeschen von objekten mit: 1. objekt.visible= False
# 2. del Objektname
#
feuerkugel=sphere(pos=(-10,-10,-100), radius=(30), color=(0.75,0.21,0), material=materials.emissive)
feuerringe=frame()
feuerring=ring(pos=(-10,-10,-100), radius=(35), color=(1,0,0), thickness=(2), material=materials.BlueMarble, frame=feuerringe)
feuerring2=ring(pos=(-10,-10,-100), radius=(37), color=(1,0,0), thickness=(2), material=materials.BlueMarble, frame=feuerringe)
planet=sphere(pos=(15,15,-80), radius=(12), color=(0,1,0), material=materials.earth)
raumschiff=frame()
nase=cone(pos=(0,0,0), axis=(0.5,0,0), radius=(0.1), material=materials.blazed, frame=raumschiff)
rumpf=box(pos=(-0.35,-0.01,0), size=(0.8,0.2,0.4), material=materials.plastic, color=(0.4,0.4,0.4), frame=raumschiff)
cockpit=ellipsoid(pos=(-0.15,0.07,0), size=(0.4,0.2,0.2), color=(0.5,0.8,0), material=materials.chrome, frame=raumschiff)
fluegel1=pyramid(pos=(-0.75,-0.01,0), size=(0.8,1.8,0.005), material=materials.plastic, color=(0.4,0.4,0.4), frame=raumschiff)
fluegel1.rotate(angle=0.65*pi,axis=(1,0,0), origin=(fluegel1.pos))
fluegel2=pyramid(pos=(-0.75,-0.01,0), size=(0.8,1.8,0.005), material=materials.plastic, color=(0.4,0.4,0.4), frame=raumschiff)
fluegel2.rotate(angle=1.35*pi,axis=(1,0,0), origin=(fluegel2.pos))
turbine1=frame(frame=raumschiff)
turbinenfront1=cone(pos=(-0.4,-0.015,0.2), length=(0.15), radius=(0.07), material=materials.blazed, frame=turbine1)
turbinenrohr1=cylinder(pos=(-0.75,-0.015,0.2), length=(0.35), radius=(0.07), material=materials.blazed, frame=turbine1)
turbinenrohrende1=cylinder(pos=(-0.751,-0.015,0.2), length=(0.001),radius=(0.06),material=materials.plastic, color=(0.4,0.4,0.4), frame=turbine1)
turbinenstrahl1=cone(pos=(-0.78,-0.015,0.2), length=(0.1), radius=(0.08), opacity=(0.6), color=(0.3,0.3,1), material=materials.emissive, frame=turbine1)
turbine2=frame(frame=raumschiff)
turbinenfront2=cone(pos=(-0.4,-0.015,-0.2), length=(0.15), radius=(0.07), material=materials.blazed, frame=turbine2)
turbinenrohr2=cylinder(pos=(-0.75,-0.015,-0.2), length=(0.35), radius=(0.07), material=materials.blazed, frame=turbine2)
turbinenrohrende2=cylinder(pos=(-0.751,-0.015,-0.2), length=(0.001),radius=(0.06),material=materials.plastic, color=(0.4,0.4,0.4), frame=turbine2)
turbinenstrahl2=cone(pos=(-0.78,-0.015,-0.2), length=(0.1), radius=(0.08), opacity=(0.6), color=(0.3,0.3,1), material=materials.emissive, frame=turbine2)
#raumschiff richtig drehen
raumschiff.rotate(angle=pi/2, axis=(0,1,0), origin=(rumpf.pos))
raumschiff.pos=(0,0,12)
class Asteroid (frame):
def __init__ (self,n=0,g=1,x=0,y=0,z=-50):
frame.__init__(self,pos=(x,y,z))
self.objekt1=sphere(frame=self,color=(0.5,0.5,0.5),radius=(g/1.4))
self.objekt2=box(frame=self,color=(0.5,0.5,0.5),length=g, height=g, width=g)
self.objekt3=box(frame=self,color=(0.5,0.5,0.5),length=g, height=g, width=g)
self.objekt3.rotate(angle=pi/4, axis=(1,0,0), origin=(0,0,0))
self.objekt3.rotate(angle=pi/4, axis=(0,1,0), origin=(0,0,0))
self.entfernung=g+0.2
class Gegner(frame):
def __init__ (self,x=0,y=0,z=-50):
frame.__init__(self,pos=(x,y,z))
self.maxi=ellipsoid(frame=self,length=4*0.7, height=1*0.7, width=4*0.7,material=materials.chrome)
self.boe=ellipsoid(frame=self,length=2.5*0.8*0.8, height=2*0.8*0.8, width=2.5*0.8*0.8,color=(0.2,0.4,1))
'''
test1=Asteroid(z=12,x=3,g=2.5)
test2=Gegner(z=12,x=-3)
'''
scharfesS=0
zeit=0
liste =[]
listenlaenge=0
f=frame()
i=0
d=0
p=0
b=0.1
zaehler=0
punkte=0
jakob=0
adolf=0
liste2=[]
listenlaenge2=0
label2=label(pos=(0,0,0),height=50,text=" verloren \n nochmal spielen: 1 \n beenden: alle anderen tasten")
label2.visible=False
label1 = label(pos = (4,4,12))
label1.height=100
highscore=0
name=[]
label3=label(heigth=50,text="name eingeben und mit Enter bestaetigen")
label4=label(heigth=50)
label4.visible=False
while scharfesS==0:
while i==0:
if scene.kb.keys: # event waiting to be processed?
s = scene.kb.getkey() # get keyboard info
if (s=="\n"):
i=1
else:
name.append(s)
label3.visible=False
label4.visible=True
name=str(name)
label4.text=(name)
time.sleep(1)
label4.visible=False
while p==0:
zaehler=zaehler+0.001
punkte=punkte+1
label1.text= (str(punkte))
#hintergrund
planet.rotate(angle=pi/450, axis=(0.3,1,0), origin=planet.pos)
feuerringe.rotate(angle=pi/800, axis=(1,0,0), origin=feuerring.pos)
feuerringe.rotate(angle=pi/750, axis=(0,1,0), origin=feuerring.pos)
feuerringe.rotate(angle=pi/4000, axis=(0,0,1), origin=feuerring.pos)
###
time.sleep(0.001)
zeit=zeit+0.01
#Bewegung
mauspos = scene.mouse.project(normal=(0,0,1), point=(0,0,13))
raumschiffx=(mauspos.x-raumschiff.x)*0.02
raumschiffy=(mauspos.y-raumschiff.y)*0.02
raumschiff.pos=(raumschiff.x+raumschiffx,raumschiff.y+raumschiffy,12)
###
#Asteroid erzeugen
if zeit > b:
jakob=random()
if jakob>=adolf:
a=Asteroid(x=(random()-0.5)*16,y=(random()-0.5)*14,z=-50,g=2.0)
liste.append(a)
listenlaenge=(listenlaenge+1)
else:
a=Gegner(x=(random()-0.5)*16,y=(random()-0.5)*14)
liste2.append(a)
listenlaenge2=(listenlaenge2+1)
zeit=0
###
#die komplette liste nach vorne verschieben
i=0
while i < listenlaenge:
i=i+1
liste[i-1].pos=(liste[i-1].x,liste[i-1].y,(liste[i-1].z+0.25))
i=0
while i < listenlaenge2:
i=i+1
liste2[i-1].pos=(liste2[i-1].x,liste2[i-1].y,(liste2[i-1].z+0.25))
###
#Asteroiden, die nicht mehr gesehen werden, loeschen
if listenlaenge==1:
if liste[0].z>40:
liste[0].visible=False
del liste[0]
listenlaenge=listenlaenge-1
else:
if listenlaenge>1:
if liste[0].z>40:
d=0
while d<(listenlaenge-1):
liste [d].pos=(liste[d+1].x,liste[d+1].y,liste[d+1].z)
d=d+1
liste[listenlaenge-1].visible=False
del liste[listenlaenge-1]
listenlaenge=listenlaenge-1
#Gegner loeschen
if listenlaenge2==1:
if liste2[0].z>40:
liste2[0].visible=False
del liste2[0]
listenlaenge2=listenlaenge2-1
else:
if listenlaenge2>1:
if liste2[0].z>40:
d=0
while d<(listenlaenge2-1):
liste2 [d].pos=(liste2[d+1].x,liste2[d+1].y,liste2[d+1].z)
d=d+1
liste2[listenlaenge2-1].visible=False
del liste2[listenlaenge2-1]
listenlaenge2=listenlaenge2-1
#Kollision berechnen
d=0
if listenlaenge>0:
while liste[d].z>11:
if liste[d].z<13:
if mag(liste[d].pos-raumschiff.pos)<1.9:
p=1
print punkte
print "verloren"
break
d=d+1
if d==listenlaenge:
break
#Gegner
d=0
if listenlaenge2>0:
while liste2[d].z>11:
if liste2[d].z<13:
if mag(liste2[d].pos-raumschiff.pos)<1:
p=1
print punkte
print "verloren"
break
d=d+1
if d==listenlaenge2:
break
# punkte und leveln
if zaehler>3:
b=b*0.8
print "fnafna"
zaehler=0
###
label2.visible=True
if scene.kb.keys: # event waiting to be processed?
s = scene.kb.getkey() # get keyboard info
if s=="1":
p=0
while 0<listenlaenge:
liste[listenlaenge-1].visible=False
del liste[listenlaenge-1]
listenlaenge=listenlaenge-1
while 0<listenlaenge2:
liste2[listenlaenge2-1].visible=False
del liste2[listenlaenge2-1]
listenlaenge2=listenlaenge2-1
punkte=0
zeit=0
else:
scharfesS=1
label2.visible=False