• API
• FAQ
• Tools
• Archive
SHARE
TWEET

# Untitled

a guest Feb 19th, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. from marioGraphics import *
2.
3. #initialization
4. dead = False
5. win = False
6. n = 3
7. d = Designer(900,900,-100,100,100,-100)
8. d.show()
9.
10. #variabili di preparazione
11. ready = False
12. intens = 1
13. direzione = 0
14.
15. #global variables to be shown everywhere (aka images and objects in the viewport)
16. pianeta = Image("./imgs/pianeta.png",0,0,0.70)
17. asteroide = Image("./imgs/asteroide.png",90,80,0.25)
18.
19. radius = Circle(pianeta, 80)
20. arrowdir = Segment(asteroide,asteroide.x-10,asteroide.y)
21. gauge = Image("./imgs/1.png",-80,-80,0.25)
22.
23.
24. def setup():
25.     #disegnaml
26.     disegna()
27.
28.     #preparazione, aspettiamo la decisione
29.     preparazione()
30.
31.
32.
33.
34.
35.
36.     #condizione d'uscita
37.     if(dead or win):
38.         d.freeze()
39.         d.destroy()
40.         del d
41.
42.
43. def disegna():
44.     global d
45.     d.draw(arrowdir)
47.     d.draw(gauge)
48.
49.     d.draw(pianeta)
50.     d.draw(asteroide)
51.
52. def gaugeanimation():
53.     #disegna il gauge in base al valore di intens
54.     global d
55.     global gauge
56.     global intens
57.
58.     if(intens==1):
59.         gauge = Image("./imgs/1.png",-80,-80,0.25)
60.         gauge.draw(d)
61.
62.
63.     if(intens==2):
64.         gauge = Image("./imgs/2.png",-80,-80,0.25)
65.         gauge.draw(d)
66.
67.
68.     if(intens==3):
69.         gauge = Image("./imgs/3.png",-80,-80,0.25)
70.         gauge.draw(d)
71.
72.
73.     if(intens==4):
74.         gauge = Image("./imgs/4.png",-80,-80,0.25)
75.         gauge.draw(d)
76.
77.
78.
79.
80. def preparazione():
82.      global intens
83.      global direzione
85.          if d.key:
86.             if d.key=="Return":
87.                 #siamo pronti!!!
88.                 ready = True
89.             if d.key=="Right":
90.                 #aumenta angolo
91.                 direzione=0.01
92.             if d.key=="Left":
93.                 #diminuisci angolo
94.                 direzione=-0.01
95.             if d.key=="Up":
96.                 #aumenta intensità
97.                 if(intens<4):
98.                     intens+=1
99.             if d.key=="Down":
100.                 #diminuisci intensità
101.                 if(intens>1):
102.                     intens-=1
103.          update()
104.          direzione=0
105.      lancio()
106.
107. def update():
108.     global arrowdir   #aggiorna le cose che deve aggiornare
110.     d.tick(0.00000000001)
111.     arrowdir.rotate(direzione)
112.     arrowdir.redraw(d)
114.     gaugeanimation()
115.
116. def lancio():
117.     global arrowdir
118.     global asteroide
119.     global d
120.     global intens
122.
123.     traiettoria = Line(arrowdir)
124.     estremo = Point(-100,traiettoria.ordinate(-100))
125.     #incremento nella direzione in cui è puntato
126.     if(arrowdir.b.x<arrowdir.a.x):
127.         incremento = 0.18*intens
128.     else:
129.         incremento = -0.18*intens
130.
131.
132.     #finchè non entra nell'orbita del pianeta
133.     while(checktraiettoria()):
134.         asteroide = asteroide.projection(estremo,incremento)
135.         d.tick(0.01)
136.         asteroide.draw(d)
137.
138.
139.
140.     orbita(estremo,incremento)
141.
142. def checktraiettoria():
143.     global asteroide
145.     global d
146.     #controllo che non vada fuori subito
147.
149.         return False
150.     if(asteroide.x>100 or asteroide.x <-100 or asteroide.y<-100 or asteroide.y>100):
151.          d.freeze()
152.          d.destroy()
153.          del d
154.          return False
155.     return True
156.
157.
158.
159. def orbita(estremo,incremento):
160.     #entra in orbita
161.     global asteroide
164.     global d
165.     accelerazione = 1
166.     mod = 1 #modulazione velocità tangenziale data dal campo gravitazionale
167.     correzione = 0
168.
169.
170.
171.     #controllo orbita
172.
174.
175.         #rapporto incrementale per calcolare la tangente (usando punto precedente) e quindi muoverlo in due componenti: verso il centro e lungo la tangente
176.         segmento = Segment(radius.c,asteroide)
177.         puntoora = Point(asteroide.x,asteroide.y)
178.         asteroide = asteroide.projection(estremo,incremento*mod-correzione/2)
180.
181.         d.tick(0.00001)
182.         asteroide.draw(d)
183.
184.         puntodopo = Point(asteroide.x,asteroide.y)
185.         traiettoria = Line(puntoora, puntodopo)
186.         d.draw(traiettoria)
187.
188.         #correzione direzione tangente
189.         if(puntoora.x>puntodopo.x):
190.             estremo = Point(-100,traiettoria.ordinate(-100))
191.         else:
192.             estremo = Point(100,traiettoria.ordinate(100))
193.
194.         #correzione modulazione
195.         correzione+=0.001*mod
196.
197.         mod = (radius.r/segmento.b.distance(segmento.a))
198.         print(traiettoria.angle())
199.
200.
201.
202.
203.
204.
205.     #è uscito dall'orbita (da fare)
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216. setup()
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.

Top