-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmonopol3.scm
139 lines (111 loc) · 3.47 KB
/
monopol3.scm
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
;----Monopol----
(require (lib "trace.ss"))
;...:::Gata:::...;
(define gata%
(class object%
(super-new)
(field (ägare false))
(init-field gatunamn färg pris hyra)
(define/public (get-gata-namn) gatunamn) ; här får vi namnet
(define/public (get-gata-färg) färg)
(define/public (get-gata-pris) pris)
(define/public (get-gata-hyra) hyra)
(define/public (get-gata-ägare) ägare)
(define/public (on-landing)
(cond
((eq? ägare false)
(display "Vill du köpa gatan?\n")
(if (eq? (read) 'ja) ; Ändra till knapptryckning med 2 alternativ.
(begin
(- (send (send world1 current-player) get-pengar) pris) ;Hur kan jag set! current-player till differansen av detta?
(set! ägare (send world1 current-player))
(display "Gatan köpt!")
(send world1 next-turn-2p))
(display "Gatan ej köpt...")))
((eq? ägare (send world1 current-player))
(begin
(display "Du står på din egen gata")
(send world1 next-turn-2p)))
(else
(begin
(display "Du äger inte denna gata")
(- (send spelare1 get-pengar) hyra) ;spelare 1 här ska vara car players.
(+ (send spelare1 get-pengar) hyra))))))) ;spelare 1 ska vara ägare
(define gata1
(new gata%
[gatunamn "Ryds Allé"]
[färg "Blå"]
[pris 400]
[hyra 20]))
(define gata2
(new gata%
[gatunamn "Ryd Centrum"]
[färg "Blå"]
[pris 550]
[hyra 30]))
;...:::Turer och spelare:::...;
(define spelare%
(class object%
(super-new)
(field (pengar 8500))
(init-field namn gator)
(define/public (get-spelare-namn) namn)
(define/public (get-pengar) pengar)
(define/public (get-gator) gator)))
(define spelare1
(new spelare%
[namn "spelare1"]
[gator void]))
(define spelare2
(new spelare%
[namn "spelare2"]
[gator void]))
(define spelare3
(new spelare%
[namn "spelare3"]
[gator void]))
(define spelare4
(new spelare%
[namn "spelare4"]
[gator void]))
;...:::Tärning:::...;
(define (random-from-to from to)
(+ from (random (- (+ to 1) from))))
(define (tärning)
(random-from-to 1 6))
;...:::Spelplan:::...;
(define world%
(class object%
(super-new)
(field (players '()))
(define/public (get-players) players)
(define/public (current-player) (mcar players))
(define/public (next-turn-2p)
(set! players (mcons (mcdr players) (mcar players))))
(define/public (start-game)
(display "Hej, hur många spelare är ni?\n")
(cond
((eq? (read) 2)
(set! players (mcons spelare1 spelare2)))
((eq? (read) 3)
(set! players (mcons spelare1 (mcons spelare2 spelare3))))
((eq? (read) 4)
(set! players (mcons spelare1 (mcons spelare2 (mcons spelare3 spelare4)))))
(else
(display "error:") (display (read)) (display " är inte OK antal spelare"))))))
(define world1
(new world%))
;...:::Turordning och aktuell spelare:::...;
;...:::Tangentbordsfunktion och speltillstånd:::...;
(define game-canvas%
(class canvas%
(inherit get-width
get-height
refresh)
(init [keyboard-handler display])
(define on-key-handle keyboard-handler)
(define/override (on-char ke)
(on-key-handle ke))
(super-new)))
(define gamestate 'titelskärm)
;(define tangent