Habe jetzt mal einen Thread aus einem meiner anderen Bastelseiten portiert.
Vielleicht ist es ja von Interesse :roll:
Als ich wieder einmal so überlegte was man denn noch so schönes mit der Picaxe realisieren könnte ,
und was es denn früher , sprich : so in den 70er / 80er Jahre an elektronische Spielereien gab, kam
ich auf das berühmte Spiel : SENSO der Firma MB
Kurz überlegt , ..... es sollte eigentlich nicht so schwer sein das Spiel umzusetzen ......
Am liebsten wäre mir die 08M als Controller gewesen, aber um nicht zu viel abspecken zu müssen ,
habe ich mich dann am Ende doch für die 14M entschieden.
Wir benötigen wie folgt :
4 x LED ( blau , grün , gelb , rot )
1x Rundenzähler
4x Taster für die 4 Farben
1x Taster für den Start
Das ergibt dann 5x Ausgänge und 5x Eingänge
Da bietet sich die 14M ja förmlich an.
Als Schaltplan sehe das dann wie folgt aus :
Der zugehörige Quellcode wäre dann also wie folgt :
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
symbol Taster =b0' ( W0 )
symbol Waiting =b1
symbol Zufallszahl =w1' (b2 + b3 )
symbol LED_Nummer =b4' ( W2 )
symbol Position =b5
symbol Wert =b6' ( W3 )
symbol Note =b7
symbol Zaehler =b8' ( W4 )
symbol W =b9
symbol Ww =b10' ( W5 )
symbol Tempo =w6' ( b12 + b13 )
goto Neustart
Start:
' Geschwindigkeit auf 0.5s
Tempo=500
main:
' Rundenzähler um 1 erhöhen
pause 250
pulsout 0,255
Taster=0
Zaehler=1
' Zufallszahlen ermitteln
goto Zufallszahlen_errechnen
los:
' Chip macht die Vorgabe
for W=1 to Zaehler
Position=79+W
peek Position,Wert
goto Play_
weiter:
pause Tempo
next W
' Spieler muss Vorgabe wiederholen
for W=1 to Zaehler
Position=79+W
peek Position,Wert
' warten auf Tasterdruck
nochmal:
Taster=pins
if Taster=0 then nochmal
' Tasterpins umrechnen
Taster=Taster+2/2
if Taster=5 then
Taster=4
endif
' wenn Spieler falsch gedrückt = Spielende
if Taster<>Wert then Play_Verloren
goto Play_
weiter2:
Taster=0
next W
pause 500
' Vorgaben bis zu 10 pro Durchgang erhöhen
' wenn geschafft = nächste Runde
inc Zaehler
if Zaehler<11 then los
'----------------------------
' nächste Runde
Waiting=24
LED_Nummer=1
for Note=1 to 120 step 5
sound 5,(Note,4)
high LED_Nummer
pause Waiting
low LED_Nummer
dec Waiting
if LED_Nummer<4 then
inc LED_Nummer
else
LED_Nummer=1
endif
next Note
for b11=1 to 4
let pins=%00011110
pause 10
let pins=0
pause 10
next b11
Tempo=Tempo/2
if Tempo<10 then
Tempo=10
endif
goto main
'----------------------------
Play_:
if Wert=1 then
Note=20
endif
if Wert=2 then
Note=38
endif
if Wert=3 then
Note=52
endif
If Wert=4 then
Note=74
endif
high Wert:sound 5,(Note,35):low Wert
pause 10
branch Taster,(weiter,weiter2,weiter2,weiter2,weiter2)
'----------------------------
Zufallszahlen_errechnen:
for Position=1 to 10
erneut:
random Zufallszahl
w5=Zufallszahl // 4+1
if b9=w5 then erneut
b9=w5
Wert=79+Position
poke Wert,b9
next Position
goto los
'---------------------------
Play_Verloren:
for Ww=1 to 15
low 2,4: high 1,3
sound 5,(4,6)
low 1,3:high 2,4
sound 5,(1,6)
next Ww
let pins=0
'--------------------------
Neustart:
nochmal2:
Taster=pins
inc Zufallszahl
if Taster<>16 then nochmal2
goto Start
Weitere Informationen findet man z.B. bei http://de.wikipedia.org/wiki/Senso_%28Spiel%29hierrüber.
Das Spiel muss also am Ende nicht unbedingt die klassische Bauform haben.
Es gilt lediglich 4 farbliche Felder mit zugehörigen Tastern anzubieten.
Eine weitere Spielvariation die mir beim Spielen selbst in den Sinn kam :
1. Runde macht 4 Farbvorgaben
Je weitere Runde werden sowohl Vorgabentempo , als auch Anzahl der
Farbvorgaben erhöht.
Bedeutet :
1. Runde = 4 Farbvorgaben
10. Runde = 13 Farbvorgaben
Die 10. Runde werden wohl recht wenige dadurch erreichen.
Der zugehörige Quellcode wäre dann also wie folgt :
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
symbol Taster =b0' ( W0 )
symbol Counter =b1
symbol Zufallszahl =w1' (b2 + b3 )
symbol LED_Nummer =b4' ( W2 )
symbol Position =b5
symbol Wert =b6' ( W3 )
symbol Note =b7
symbol Zaehler =b8' ( W4 )
symbol W =b9
symbol Ww =b10' ( W5 )
symbol xxxx =b11
symbol Tempo =w6' ( b12 + b13 )
goto Neustart
Start:
' Geschwindigkeit auf 0.5s
Tempo=500
Counter=5
'#####################################################
main:
' Rundenzähler um 1 erhöhen
pause 500
pulsout 0,255
Taster=0
Zaehler=1
inc Counter
' Zufallszahlen ermitteln
goto Zufallszahlen_errechnen
los:
' Chip macht die Vorgabe
for W=1 to Zaehler
Position=79+W
peek Position,Wert
goto Play_
weiter:
pause Tempo
next W
' Spieler muss Vorgabe wiederholen
for W=1 to Zaehler
Position=79+W
peek Position,Wert
' warten auf Tasterdruck
nochmal:
Taster=pins
if Taster=0 then nochmal
' Tasterpins umrechnen
Taster=Taster+2/2
if Taster=5 then
Taster=4
endif
' wenn Spieler falsch gedrückt = Spielende
if Taster<>Wert then Play_Verloren
goto Play_
weiter2:
Taster=0
next W
pause 1000
' Vorgaben bis zu 4 pro Durchgang erhöhen
' wenn geschafft = nächste Runde
' pro neuer Runde wird die Vorgabe erhöht
inc Zaehler
if Zaehler<Counter then los
'----------------------------
' nächste Runde
LED_Nummer=1
for Note=1 to 120 step 5
sound 5,(Note,4)
high LED_Nummer:pause 20:low LED_Nummer
inc LED_Nummer
if LED_Nummer=5 then
LED_Nummer=1
endif
next Note
'-----------------------
for b9=1 to 6
let pins=%00011110
pause 10
let pins=0
pause 10
next b9
Tempo=Tempo/4
if Tempo<10 then
Tempo=10
endif
goto main
'#############################################
Play_:
if Wert=1 then
Note=20
endif
if Wert=2 then
Note=38
endif
if Wert=3 then
Note=52
endif
If Wert=4 then
Note=74
endif
high Wert:sound 5,(Note,35):low Wert
pause 10
branch Taster,(weiter,weiter2,weiter2,weiter2,weiter2)
'----------------------------
Zufallszahlen_errechnen:
for Position=1 to 10
erneut:
random Zufallszahl
w5=Zufallszahl // 4+1
if b9=w5 then erneut
b9=w5
Wert=79+Position
poke Wert,b9
next Position
goto los
'---------------------------
Play_Verloren:
for Ww=1 to 15
low 2,4: high 1,3
sound 5,(4,6)
low 1,3:high 2,4
sound 5,(1,6)
next Ww
let pins=0
'--------------------------
Neustart:
nochmal2:
Taster=pins
inc Zufallszahl
if Taster<>16 then nochmal2
goto Start