1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
# -*- coding: utf-8 -*-
import sys
from visual import *
import math as m
import time
G = -1.6 / 100
PI = m.pi
DT = 1.005
class Moon_Lander_Game(object):
def __init__(self):
scene.width = 400
scene.height = 600
self.lander = Lander()
self.gedaan = False
f = frame ()
self.view = f
curve(frame=f, pos=[(-20,-20), (-17,-17)], radius=0, color=color.red)
curve(frame=f, pos=[(-17,-17), (-9,-17)], radius=0, color=color.green)
curve(frame=f, pos=[(-9,-17), (-6,-18), (-2,-15), (2,-17)], radius=0,
color=color.red)
curve(frame=f, pos=[(2,-17), (10,-17)], radius=0, color=color.green)
curve(frame=f, pos=[(10,-17), (15,-19), (18,-15), (20,-20)], radius=0,
color=color.red)
def play_nieuw(self):
while not self.gedaan:
self.lander.wordt_aangetrokken()
self.lander.verplaats()
self.gedaan = self.lander.is_gecrashed_of_geland()
self.verwerk_toetsenbord_invoer()
# La vitesse du jeu se regle ici
time.sleep(0.5)
def verwerk_toetsenbord_invoer(self):
# Saisie clavier
if scene.kb.keys:
toets = scene.kb.getkey()
if toets == "left":
self.lander.draai_links()
elif toets == "right":
self.lander.draai_rechts()
elif toets == "up":
self.lander.geef_gas()
elif toets == 'ctrl+c':
sys.exit('Exit by user.')
class Lander(object):
def __init__(self):
self.acceleration = vector(0, G)
self.hoek = PI / 2.0
self.gas = vector(0, 0, 0)
self.frame = frame()
curve(frame=self.frame, pos=[(-11,17), (-8,17), (-8,15), (-11,15),
(-11,17)], radius=0, color=color.white)
curve(frame=self.frame, pos=[(-10,17), (-11,18), (-10,19), (-9,19),
(-8,18), (-9,17)], radius=0,
color=color.white)
curve(frame=self.frame, pos=[(-11,16), (-12,14), (-10,15)], radius=0,
color=color.white)
curve(frame=self.frame, pos=[(-8,16), (-7,14), (-9,15)], radius=0,
color=color.white)
curve(frame=self.frame, pos=[(-12.5,14), (-11.5,14)], radius=0,
color=color.red)
curve(frame=self.frame, pos=[(-7.5,14), (-6.5,14)], radius=0,
color=color.red)
curve(frame=self.frame, pos=[(-10,15), (-9.5,12), (-9,15)], radius=0,
visible=False)
curve(frame=self.frame, pos=[(-12.5,14), (-6.5,14), (-8,19), (-11,19),
(-12.5,14)], radius=0, visible=False)
self.frame.velocity = vector(0, 0.1, 0)
self.frame.pos = (10, 0, 0)
def wordt_aangetrokken(self):
# Falling velocity
self.acceleration *= DT
self.frame.velocity += self.acceleration
def verplaats(self):
# Positionning
self.frame.pos += self.frame.velocity
print 'fall:', self.frame.pos
def draai_links(self):
# Set left deviation
self.frame.axis -= (0, 0, 0.05)
self.gas = vector(-sin(self.hoek), cos(self.hoek))
def draai_rechts(self):
# Set right deviation
self.frame.axis += (0, 0, 0.05)
self.gas = vector(sin(self.hoek), cos(self.hoek))
def geef_gas(self):
# Set modified velocity
self.frame.velocity += self.gas
self.frame.pos += self.frame.velocity
# Reset falling velocity
self.frame.velocity -= self.gas
def is_gecrashed_of_geland(self):
#XXX TODO
return False
if __name__ == '__main__':
nieuw_spel = Moon_Lander_Game()
nieuw_spel.play_nieuw() |
Partager