3
3
INCLUDE DSK1.TOOLS
4
4
INCLUDE DSK1.GRAFIX
5
5
INCLUDE DSK1.RANDOM
6
+ INCLUDE DSK1.UDOTR \ right justified number printers
6
7
INCLUDE DSK1.MARKER
7
8
8
9
MARKER ALPHA
9
10
\ ==================================
10
11
\ character patterns
11
12
HEX
12
- 00FE FEFE FEFE FEFE PATTERN: REDBRICK
13
- 3C7E DBFF DBE7 7E3C PATTERN: HAPPYFACE
14
- 3C7E DBFF E7DB 7E3C PATTERN: SADFACE
15
- 0022 5508 C92A 1C3E PATTERN: PLANT
13
+ CREATE REDBRICK 00FE , FEFE , FEFE , FEFE ,
14
+ CREATE HAPPYFACE 3C7E , DBFF , DBE7 , 7E3C ,
15
+ CREATE SADFACE 3C7E , DBFF , E7DB , 7E3C ,
16
+ CREATE PLANT 0022 , 5508 , C92A , 1C3E ,
16
17
17
18
\ named chars
18
19
DECIMAL
19
20
160 CONSTANT ALPHA-GUY
20
21
168 CONSTANT BRICK
21
22
176 CONSTANT FOOD
22
23
23
- \ define chars
24
- REDBRICK BRICK CHARDEF BRICK SET# 7 15 COLOR
25
- PLANT FOOD CHARDEF FOOD SET# 13 1 COLOR
24
+ : DEFINE-CHARS
25
+ REDBRICK BRICK CHARDEF BRICK SET# 7 15 COLOR
26
+ PLANT FOOD CHARDEF FOOD SET# 13 1 COLOR
27
+ ;
26
28
27
29
: CLIP ROT MIN MAX ;
28
-
29
30
: RNDX ( -- x) 23 RND 2 22 CLIP ;
30
31
: RNDY ( -- y) 33 RND 2 30 CLIP ;
31
32
@@ -67,7 +68,7 @@ CREATE MY-XY RNDY , RNDX , \ independant cursor for alpha guy
67
68
68
69
: CHANGE-DIR ( -- ) NEW-VECTORS VECTOR 2! ;
69
70
: VECTOR@ ( -- dx dy) VECTOR 2@ ;
70
- : VECT+ ( x y dx dy -- x' y' ) ROT + -ROT + SWAP ;
71
+ : VECT+ ( x y dx dy -- x' y' ) ROT + >R + R> ;
71
72
72
73
\ direct memory screen control
73
74
: >VPOS ( Y X -- vaddr) C/L@ * + ;
@@ -84,12 +85,10 @@ CREATE MY-XY RNDY , RNDX , \ independant cursor for alpha guy
84
85
DECIMAL
85
86
VARIABLE TRYS
86
87
VARIABLE SPEED
87
-
88
- \ print right justified n spaces
89
- : .R ( n n -- ) >R DUP ABS 0 <# #S ROT SIGN #> R> OVER - SPACES TYPE ;
88
+ : BLANKLN ( -- ) VPOS C/L@ BL VFILL ;
90
89
91
90
: .BRAIN ( -- )
92
- 0 0 CLRLN
91
+ 0 0 AT-XY BLANKLN
93
92
." Vector" VECTOR 2@ 2 .R ." ," 2 .R
94
93
SPACE ." Trys " TRYS @ 2 .R
95
94
SPACE ." Energy " SPEED @ 150 - ABS 3 .R ;
@@ -105,9 +104,9 @@ VARIABLE SPEED
105
104
: SPEED++ ( -- ) SPEED @ 35 - SPEED! ; \ speed is inverse
106
105
: SPEED-- ( -- ) SPEED @ 1+ SPEED! ;
107
106
108
- : EAT ( -- )
109
- BL NEXT-POS >VPOS VC!
110
- SPEED++ ;
107
+ : EAT ( -- )
108
+ BL NEXT-POS >VPOS VC!
109
+ SPEED++ ;
111
110
112
111
: CLEAR-AHEAD? ( -- ?) NEXT-POS READ-CHAR BL = ;
113
112
: FOOD? ( -- ?) NEXT-POS READ-CHAR FOOD = ;
@@ -118,29 +117,54 @@ VARIABLE SPEED
118
117
BEGIN
119
118
1 TRYS +! \ count the try
120
119
CHANGE-DIR \ get new direction
121
- .BRAIN 50 MS
120
+ .BRAIN 50 MS
122
121
CLEAR-AHEAD?
123
122
UNTIL
124
- HAPPY ;
123
+ HAPPY ;
124
+
125
+ : EXPLAIN
126
+ TEXT
127
+ PAGE ." * ALPHA INTELLIGENCE *"
128
+ CR
129
+ CR ." A minimum form of machine intelligence"
130
+ CR ." where a robot follows a vector until it"
131
+ CR ." meets an optstacle."
132
+ CR
133
+ CR ." It then tries RANDOM vectors until it"
134
+ CR ." finds a clear path."
135
+ CR ." Lather, Rinse, Repeat."
136
+ CR
137
+ CR ." (Press a key to change the maze)"
138
+ CR
139
+ CR ." Concept from:"
140
+ CR
141
+ CR ." PROJECTS IN MACHINE INTELLIGENCE"
142
+ CR ." for your HOME COMPUTER"
143
+ CR ." David Heiserman, 1982"
144
+
145
+ 6 23 AT-XY ." Press any key to continue"
146
+ BEGIN KEY? UNTIL
147
+ ;
125
148
126
149
DECIMAL
127
150
: RUN ( -- )
128
- BEGIN
129
- PAGE 4 10 AT-XY ." Alpha Intelligence Demo" 1000 MS
130
- PAGE
131
- 16 SCREEN
151
+ PAGE 4 10 AT-XY ." Alpha Intelligence Demo" 1000 MS
152
+ EXPLAIN
153
+ BEGIN
154
+ GRAPHICS 16 SCREEN
155
+ DEFINE-CHARS
132
156
.BORDER .WALLS PLANTS
133
157
HAPPY SHOW-MAN
134
158
CHANGE-DIR
135
159
150 SPEED! \ 150 is slow, longest delay
136
160
BEGIN
161
+ SP0 SP!
137
162
FOOD? IF BEEP EAT THEN
138
163
CLEAR-AHEAD?
139
- IF MOVE-MAN \ if true
140
- ELSE ALPHA-THINK \ otherwise
164
+ IF MOVE-MAN
165
+ ELSE ALPHA-THINK
141
166
THEN SPEED @ MS
142
167
KEY?
143
168
UNTIL
144
- ?BREAK
145
- AGAIN ;
146
-
169
+ ?TERMINAL IF PAGE .S QUIT THEN
170
+ AGAIN ;
0 commit comments