1 ' Biorythm calculator
\r
2 ' made by Svjatoslav Agejenko
\r
4 ' email: svjatoslavagejenko@gmail.com
\r
6 DECLARE FUNCTION gety& (zx2!, re&)
\r
7 DECLARE SUB getdata (zt!, y1&, y2&, y3&)
\r
8 DECLARE SUB dispgraph (sday&, dday&)
\r
9 DECLARE FUNCTION getday& (y&, m&, d&)
\r
10 DECLARE FUNCTION mdays& (y&, m&)
\r
11 DECLARE FUNCTION getcol& (r&, g&, b&)
\r
12 DECLARE FUNCTION getcolor& (r&, g&, b&)
\r
13 DECLARE FUNCTION geth& (x1&)
\r
14 DECLARE FUNCTION absday! (y!, m!, d!)
\r
15 DECLARE SUB listload ()
\r
16 DECLARE SUB listsave ()
\r
17 DECLARE SUB savelist ()
\r
19 DECLARE SUB getson (a$)
\r
20 DECLARE SUB cmd (a$)
\r
21 DECLARE SUB cmdline ()
\r
22 DECLARE SUB setupal ()
\r
23 DECLARE SUB loadfont ()
\r
24 DECLARE SUB start ()
\r
28 DIM SHARED mitus, sona$(1 TO 50)
\r
31 DIM SHARED humnick$(1 TO 100)
\r
32 DIM SHARED humby(1 TO 100)
\r
33 DIM SHARED humbm(1 TO 100)
\r
34 DIM SHARED humbd(1 TO 100)
\r
51 IF a$ = SPACE$(LEN(a$)) THEN GOTO 2
\r
54 SELECT CASE sona$(1)
\r
56 PRINT "about - display banner"
\r
57 PRINT "help - get help"
\r
58 PRINT "bye - quit program"
\r
59 PRINT "who - display list of known peoples"
\r
60 PRINT "add name birtyear birthmonth birthday"
\r
61 PRINT " - add new human to list"
\r
62 PRINT "rm name - remove human from list"
\r
63 PRINT "clear - clear humans list"
\r
64 PRINT "today name - show biorythm for today"
\r
65 PRINT "look name year month day"
\r
66 PRINT " - show biorythm for given day"
\r
68 COLOR getcol(255, 0, 0)
\r
70 COLOR getcol(0, 255, 0)
\r
72 COLOR getcol(0, 0, 255)
\r
73 PRINT " intellectual"
\r
74 COLOR getcol(255, 255, 0)
\r
79 PRINT "Biorythm calculator, by"
\r
80 PRINT "Svjatoslav Agejenko: n0@hot.ee"
\r
81 PRINT "2003.July.07"
\r
82 PRINT "current date:"; curry; currm; currd
\r
83 PRINT "type 'help' to get help"
\r
87 IF humamo = 100 THEN PRINT "too mutch peoples in database": GOTO 2
\r
88 IF LEN(sona$(2)) > 12 THEN PRINT "Name too long. Use short nicknames.": GOTO 2
\r
90 IF humnick$(a) = sona$(2) THEN PRINT "such name already exists": GOTO 2
\r
93 humnick$(humamo) = sona$(2)
\r
94 humby(humamo) = VAL(sona$(3))
\r
95 humbm(humamo) = VAL(sona$(4))
\r
96 humbd(humamo) = VAL(sona$(5))
\r
100 PRINT "no humans in database"
\r
102 FOR a = 1 TO humamo
\r
103 PRINT humnick$(a) + SPACE$(15 - LEN(humnick$(a)));
\r
104 ztt = getday(curry, currm, currd) - getday(humby(a), humbm(a), humbd(a))
\r
105 getdata ztt, y1, y2, y3
\r
106 c = getcol((y1 + 100) * 1.25, (y2 + 100) * 1.25, (y3 + 100) * 1.25)
\r
112 PRINT humby(a); humbm(a); humbd(a)
\r
119 FOR a = 1 TO humamo
\r
120 IF sona$(2) = humnick$(a) THEN
\r
121 humnick$(a) = humnick$(humamo)
\r
122 humby(a) = humby(humamo)
\r
123 humbm(a) = humbm(humamo)
\r
124 humbd(a) = humbd(humamo)
\r
125 humamo = humamo - 1
\r
129 PRINT "such human not found in list"
\r
131 FOR a = 1 TO humamo
\r
132 IF sona$(2) = humnick$(a) THEN
\r
133 dispgraph getday(humby(a), humbm(a), humbd(a)), getday(curry, currm, currd)
\r
137 PRINT "such human not found in list"
\r
139 FOR a = 1 TO humamo
\r
140 IF sona$(2) = humnick$(a) THEN
\r
141 dispgraph getday(humby(a), humbm(a), humbd(a)), getday(VAL(sona$(3)), VAL(sona$(4)), VAL(sona$(5)))
\r
145 PRINT "such human not found in list"
\r
147 PRINT "unknown command> " + a$
\r
163 SUB dispgraph (sday, dday)
\r
168 LINE (0, 145)-(319, 190), 1, BF
\r
169 h = (145 + 190) / 2
\r
171 LINE (0, h)-(319, h), getcol(0, 0, 80)
\r
173 FOR x = 3 TO 319 STEP 8
\r
176 ttime = dday - sday
\r
178 clr1 = getcol(255, 0, 0)
\r
179 clr2 = getcol(0, 255, 0)
\r
180 clr3 = getcol(0, 0, 255)
\r
181 w = getcol(255, 255, 255)
\r
184 zt = x / 8 + ttime - 10
\r
185 IF zt = INT(zt) THEN
\r
186 IF zt + sday = dday THEN
\r
187 LINE (x, 145)-(x, 190), getcol(200, 200, 0)
\r
189 LINE (x, 145)-(x, 190), getcol(100, 100, 100)
\r
191 IF (zt + sday) MOD 7 = 6 THEN CIRCLE (x, 145), 2, getcol(255, 255, 0)
\r
193 getdata zt, y1, y2, y3
\r
194 c = getcol((y1 + 100) * 1.25, (y2 + 100) * 1.25, (y3 + 100) * 1.25)
\r
197 LINE (x, h - y1 / 5)-(x - 1, h - oy1 / 5), clr1
\r
198 LINE (x, h - y2 / 5)-(x - 1, h - oy2 / 5), clr2
\r
199 LINE (x, h - y3 / 5)-(x - 1, h - oy3 / 5), clr3
\r
209 FUNCTION getcol (r, g, b)
\r
210 IF r < 0 THEN r = 0
\r
211 IF g < 0 THEN g = 0
\r
212 IF b < 0 THEN b = 0
\r
213 IF r > 255 THEN r = 255
\r
214 IF g > 255 THEN g = 255
\r
215 IF b > 255 THEN b = 255
\r
216 getcol = INT(r / 43) * 36 + INT(g / 43) * 6 + INT(b / 43)
\r
220 SUB getdata (zt, y1, y2, y3)
\r
227 FUNCTION getday (y, m, d)
\r
229 FOR a = 1600 TO y - 1
\r
231 IF a \ 4 = a / 4 THEN r = r + 1
\r
235 r = r + mdays(y, a)
\r
245 FOR b = 1 TO LEN(a$)
\r
246 c$ = RIGHT$(LEFT$(a$, b), 1)
\r
255 sona$(mitus) = sona$(mitus) + c$
\r
262 FUNCTION gety (zx2, re)
\r
265 IF zx1 > (re * 100) THEN zx1 = zx1 - (re * 100): GOTO 9
\r
267 IF zx1 > (re * 10) THEN zx1 = zx1 - (re * 10): GOTO 8
\r
269 IF zx1 >= re THEN zx1 = zx1 - re: GOTO 7
\r
271 zx1 = zx1 * (100 / re)
\r
273 IF zx1 MOD 100 < 50 THEN s = 100 ELSE s = -100
\r
274 zx = zx1 * 2 MOD 100
\r
276 gety = SIN(zx / 52) * s
\r
278 gety = SIN(pi / 2 + (zx - 88) / 6.7) * s
\r
284 OPEN "ppl.txt" FOR INPUT AS #1
\r
286 IF EOF(1) <> 0 THEN GOTO 5
\r
296 OPEN "ppl.txt" FOR OUTPUT AS #1
\r
297 FOR a = 1 TO humamo
\r
298 PRINT #1, humnick$(a); humby(a); humbm(a); humbd(a)
\r
301 PRINT "list updated"
\r
304 FUNCTION mdays (y, m)
\r
310 IF y / 4 = y \ 4 THEN r = 29 ELSE r = 28
\r
340 PRINT "Known humans list is modified,"
\r
341 PRINT "save modifications ? (y/n)"
\r
343 IF a$ = "n" THEN GOTO 3
\r
344 IF a$ <> "y" THEN GOTO 4
\r
370 currm = VAL(LEFT$(a$, 2))
\r
371 curry = VAL(RIGHT$(a$, 4))
\r
372 currd = VAL(RIGHT$(LEFT$(a$, 5), 2))
\r
373 colstd = getcol(100, 150, 255)
\r
374 colusr = getcol(0, 255, 0)
\r