-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
163 lines (129 loc) · 6.58 KB
/
main.py
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
from settings import *
from utils import *
from models import *
import sys
import random as rd
def mennesket_kontroll(mennesket, hinderinger):
up_hit, down_hit, left_hit, right_hit = False, False, False, False
for hinder in hinderinger:
if mennesket.sjekk_kollisjon(hinder.rekt):
if hinder.x > mennesket.x:
left_hit, right_hit = True, False
if mennesket.x > hinder.x:
right_hit, left_hit = True, False
if hinder.y > mennesket.y:
up_hit, down_hit = True, False
if mennesket.y > hinder.y:
down_hit, up_hit = True, False
keys = pg.key.get_pressed()
if keys[pg.K_w] and not down_hit and mennesket.y > 0:
mennesket.beveg("opp")
if keys[pg.K_s] and not up_hit and mennesket.y + mennesket.fart + mennesket.HØYDE < SKJERM_HØYDE:
mennesket.beveg("ned")
if keys[pg.K_d] and not left_hit and mennesket.x + mennesket.BREDDE + mennesket.fart< SKJERM_BREDDE:
mennesket.beveg("høyre")
if keys[pg.K_a] and not right_hit and mennesket.x > 0:
mennesket.beveg("venstre")
def spøkelse_kontroll(spøkelser, frisone_v, frisone_h):
for spøkelse in spøkelser:
spøkelse.endre_retning(frisone_v, frisone_h)
vx,vy = spøkelse.vx, spøkelse.vy
if spøkelse.ret == "venstre":
spøkelse.flytt(-vx, -vy)
elif spøkelse.ret == "høyre":
spøkelse.flytt(vx, vy)
elif spøkelse.ret == "ned":
spøkelse.flytt(vx,-vy)
elif spøkelse.ret == "opp":
spøkelse.flytt(-vx,vy)
def tegn_vinduet(spille_brett, menneske):
spille_brett.vindu.fill("black")
pg.draw.rect(spille_brett.vindu, FRISONE_FARGE, spille_brett.venstre_frisone)
pg.draw.rect(spille_brett.vindu, FRISONE_FARGE,spille_brett.høyre_frisone)
pg.draw.rect(spille_brett.vindu, STOLPE_FARGE, spille_brett.stolpe)
if menneske.sjekk_kollisjon(spille_brett.venstre_frisone) and menneske.bærerSau:
menneske.endre_fart(7)
menneske.bær_sau(False)
menneske.øk_poeng()
spille_brett.legg_till_objekt(Sau(rd.randint(0, FRISONE_BREDDE-100), rd.randint(SKJERM_HØYDE//2 - 120, (SKJERM_HØYDE//2 - 120)+ FRISONE_HØYDE-50)))
spille_brett.legg_till_objekt(Sau(rd.randint(SKJERM_BREDDE-FRISONE_BREDDE, SKJERM_BREDDE-FRISONE_BREDDE//8), rd.randint(SKJERM_HØYDE//2 - 120, (SKJERM_HØYDE//2 - 120)+ FRISONE_HØYDE-50)))
spille_brett.legg_till_objekt(Spøkelse(tilfeldig_retning()))
spille_brett.legg_till_objekt(Hindering())
for obj in spille_brett.objekter:
if obj.navn == "hindering":
hinderinger = hent_objekter(spille_brett.objekter, "hindering")
if obj.rekt.colliderect(spille_brett.venstre_frisone) or obj.rekt.colliderect(spille_brett.høyre_frisone):
spille_brett.fjern_objekt(obj)
spille_brett.legg_till_objekt(Hindering())
if sjekk_innen_kollisjon(obj, hinderinger, False):
spille_brett.fjern_objekt(obj)
spille_brett.legg_till_objekt(Hindering())
if obj.navn == "spøkelse":
if menneske.sjekk_kollisjon(obj.rekt) or menneske.bærtSsau.colliderect(obj.rekt):
avslutt_spill()
if obj.navn == "sau":
sauer = hent_objekter(spille_brett.objekter, "sau")
if menneske.sjekk_kollisjon(obj.rekt) and menneske.bærerSau:
avslutt_spill()
if menneske.sjekk_kollisjon(obj.rekt) and menneske.sjekk_kollisjon(spille_brett.høyre_frisone):
menneske.bær_sau(True)
menneske.endre_fart(3.5)
spille_brett.fjern_objekt(obj)
if sjekk_innen_kollisjon(obj, sauer, False):
if obj.rekt.colliderect(spille_brett.venstre_frisone):
spille_brett.fjern_objekt(obj)
spille_brett.legg_till_objekt(Sau(rd.randint(0, FRISONE_BREDDE-100), rd.randint(SKJERM_HØYDE//2 - 120, (SKJERM_HØYDE//2 - 120)+ FRISONE_HØYDE-50)))
if obj.rekt.colliderect(spille_brett.høyre_frisone):
spille_brett.fjern_objekt(obj)
spille_brett.legg_till_objekt(Sau(rd.randint(SKJERM_BREDDE-FRISONE_BREDDE, SKJERM_BREDDE-FRISONE_BREDDE//8), rd.randint(SKJERM_HØYDE//2 - 120, (SKJERM_HØYDE//2 - 120)+ FRISONE_HØYDE-50)))
obj.tegn(spille_brett.vindu)
pg.display.update()
def main():
"""
Implementerer: ¨
Ved oppstart skal spillet bestå av:
Spillebrett,
Menneskeobjekt
Spøkelsesobjekt
Tre hindringsobjekter
Tre saueobjekter
Det er gjort før spillet begynner
"""
antall_start_hinderinger = 0
antall_start_sauer = 0
spille_brett = SpilleBrett(SKJERM_BREDDE, SKJERM_HØYDE)
menneske = Menneske(50, SKJERM_HØYDE//2-100)
spøkelse = Spøkelse(tilfeldig_retning())
spille_brett.legg_till_objekt(menneske)
spille_brett.legg_till_objekt(spøkelse)
while antall_start_hinderinger < 3:
ikke_kollidert = False
ny_hinder = Hindering()
#Ingen objekter skal være oppå hverandre.
while not ikke_kollidert:
ikke_kollidert = True
if ny_hinder.rekt.colliderect(spøkelse.rekt):
ikke_kollidert = False
ny_hinder.plassering(rd.randint(0, SKJERM_BREDDE - 50), rd.randint(0, SKJERM_HØYDE-50))
spille_brett.legg_till_objekt(ny_hinder)
antall_start_hinderinger += 1
while antall_start_sauer < 3:
ny_sau = Sau(rd.randint(SKJERM_BREDDE-FRISONE_BREDDE, SKJERM_BREDDE-FRISONE_BREDDE//8), rd.randint(SKJERM_HØYDE//2 - 120, (SKJERM_HØYDE//2 - 120)+ FRISONE_HØYDE-50))
spille_brett.legg_till_objekt(ny_sau)
antall_start_sauer += 1
run = True
while run:
clock.tick(FPS)
for event in pg.event.get():
if event.type == pg.QUIT:
run = False
avslutt_spill()
menneske = hent_objekter(spille_brett.objekter, "mennesket")[0]
spøkelser = hent_objekter(spille_brett.objekter, "spøkelse")
hinderinger = hent_objekter(spille_brett.objekter, "hindering")
mennesket_kontroll(menneske, hinderinger) # Menneskeobjekt piltast kontroller
spøkelse_kontroll(spøkelser, spille_brett.venstre_frisone, spille_brett.høyre_frisone) # Spøkelse tilfeldig bevegelse
tegn_vinduet(spille_brett, menneske)
#
if __name__ == "__main__":
main()