home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Disc 33
/
Commodore_Disc_33_19xx_-_de.d64
/
zahlenraetsel
(
.txt
)
< prev
Wrap
Commodore BASIC
|
2022-10-26
|
7KB
|
358 lines
10 rem *************************
20 rem zahlen-raetsel ***
30 rem ***
40 rem ein programm fuer c64 ***
50 rem ***
60 rem geschrieben von ***
70 rem ***
80 rem guenter kramer ***
90 rem *************************
100 gosub2700
110 gosub3240
120 ife$="0"then260
130 gosub300
140 gosub1190
150 gosub1820
160 gosub2920
170 pokeze,23:pokesp,0:syscu
180 printchr$(30)"neue aufgabe?[160](j/n)"
190 poke198,0
200 geta$:ifa$="n"then260
210 ifa$<>"j"then200
220 pokeze,23:pokesp,0:syscu
230 printchr$(158);
240 print"bitte etwas geduld!"
250 goto130
260 end
270 rem ***********************
280 rem *** aufgabe stellen ***
290 rem ***********************
300 w$(0)="*":w$(5)=":":ti$="000000"
310 w(0)=int(700*rnd(0))+111
320 a=w(0)
330 ifa=5*int(a/5)then310
340 if(aand1)=0then400
350 fori=3to17step4
360 ifi*int(a/i)=athena=99
370 ifi=11theni=9
380 next
390 ifa<>99then310
400 a=1000*(3+int(7*rnd(0)))
410 w(2)=w(0):w(1)=1
420 w(2)=w(2)+w(0):w(1)=w(1)+1
430 ifw(1)<(int(9*rnd(0))+12)then420
440 ifw(2)<1000then420
450 ifa>w(2)then420
460 ifw(2)<10000then490
470 w(2)=w(2)-w(0):w(1)=w(1)-1
480 goto460
490 a=w(0):w(5)=a:w(8)=w(1)
500 fori=17to3step-4
510 ifi*int(a/i)<>athen540
520 w(5)=a/i:w(8)=w(1)*i
530 a0=i:i=4
540 ifi=13theni=15
550 next
560 if(aand1)=1then590
570 ifi=0then590
580 w(5)=w(5)/2:w(8)=w(8)*2
590 gosub1070
600 w(3)=int(rnd(0)*600)
610 w$(3)="+":w(6)=w(0)+w(3)
620 goto650
630 w$(3)="-":w(6)=w(0)-w(3)
640 ifw(6)<1then610
650 a$=left$(ti$,2)+"."+mid$(ti$,3,2)
660 a$=a$+"."+right$(ti$,2)
670 printchr$(19)a$
680 ifw(5)=w(3)then730
690 ifw(8)=w(6)then730
700 ifw(3)=w(1)then730
710 ifw(3)=w(0)then730
720 goto740
730 w(3)=w(3)+1:goto610
740 ifw(3)>w(5)then770
750 w$(1)="+":w(4)=w(5)-w(3)
760 goto780
770 w$(1)="-":w(4)=w(3)-w(5)
780 ifw(6)>w(8)then810
790 w$(2)="+":w(7)=w(8)-w(6)
800 goto830
810 w$(2)="-":w(7)=w(6)-w(8)
820 ifw(7)<1then600
830 ifw(1)<w(7)then880
840 a=w(1)-w(4)
850 w$(4)="-"
860 ifa<>w(7)then910
870 goto1030
880 a=w(1)+w(4)
890 w$(4)="+"
900 ifa=w(7)then1030
910 a0=w(7)-a
920 if(a0and1)=1then310
930 if(aa+2=a0)and(a0<0)thenw(3)=w(3)+abs(a0/2)-1
940 if(aa-2=a0)and(a0>0)thenw(3)=w(3)+abs(a0/2)-1
950 ifaa=a0then310
960 if(aa+2=a0)and(a0>0)then310
970 if(aa-2=a0)and(a0<0)then310
980 ifac=aa+a0then310
990 ac=aa+a0
1000 aa=a0:w(3)=w(3)+1
1010 ifa0<0then610
1020 goto630
1030 return
1040 rem *****************
1050 rem *** variieren ***
1060 rem *****************
1070 a0=int(4*rnd(0))
1080 ifa0=1then1150
1090 ifa0=2then1130
1100 a=w(0):w(0)=w(8):w(8)=a
1110 a=w(5):w(5)=w(1):w(1)=a
1120 ifa0=3then1150
1130 a=w(0):w(0)=w(1):w(1)=a
1140 a=w(5):w(5)=w(8):w(8)=a
1150 return
1160 rem **********************
1170 rem *** verschluesseln ***
1180 rem **********************
1190 fori=0to9
1200 a=int(rnd(0)*10)
1210 a$=s$(i):s$(i)=s$(a)
1220 s$(a)=a$
1230 next
1240 a(0)=0:a(1)=0:a(2)=0
1250 fori=0to8
1260 a$=str$(w(i))
1270 l$(i)=""
1280 forj=2tolen(a$)
1290 a0$=s$(asc(mid$(a$,j,1))-48)
1300 l$(i)=l$(i)+a0$
1310 next
1320 a0=len(l$(i))
1330 a=i-int(i/3)*3
1340 ifa(a)<a0thena(a)=a0
1350 next
1360 printchr$(147)chr$(158)
1370 au=au+1
1380 printspc(15)"aufgabe"au
1390 gosub3030
1400 pokeze,14:pokesp,13:syscu
1410 ife$="2"thenprintchr$(30)"f1 = ende":return
1420 printchr$(30)"f1 = loesung"
1430 printspc(13)"f3 = druck aufgabe"
1440 printspc(13)"f5 = druck loesung"
1450 printspc(13)"f7 = druck beide"
1460 return
1470 rem ***************
1480 rem *** drucken ***
1490 rem ***************
1500 open1,4
1510 print#1,"aufgabe"au:print#1
1520 fori=0to2:w=i*3
1530 a$="":ifei=135then1600
1540 a$=str$(w(w))
1550 a$=right$(" "+a$,4)+"[160]"+w$(i)
1560 a0$=str$(w(w+1))
1570 a$=a$+right$(" "+a0$,4)+"[160]= "
1580 a0$=str$(w(w+2))
1590 a$=a$+right$(" "+a0$,5)+" "
1600 ifei=134then1640
1610 a$=a$+right$(" "+l$(w),4)+" "
1620 a$=a$+w$(i)+right$(" "+l$(w+1),4)
1630 a$=a$+" = "+right$(" "+l$(w+2),4)
1640 print#1,a$
1650 ifi>0then1690
1660 a$=" "+w$(3)+" "+w$(4)
1670 a$=a$+" "+w$(5)+" "
1680 goto1730
1690 ifi<>1then1760
1700 a$=""
1710 forj=1to18:a$=a$+chr$(99):next
1720 a$=a$+" "
1730 ifei<>136then1750
1740 a$=a$+a$
1750 print#1,a$
1760 next
1770 print#1:print#1:close1
1780 return
1790 rem **********************
1800 rem *** aufgabe loesen ***
1810 rem **********************
1820 ad=f+a+120
1830 aa=0:ab=1:gosub1970
1840 poke198,0
1850 pokee,5
1860 gosub2240
1870 if(ei>133)and(ei<137)thengosub1500
1880 ifei=133then1930
1890 pokee,7
1900 gosub2240
1910 if(ei>133)and(ei<137)thengosub1500
1920 ifei<>133then1850
1930 return
1940 rem **************************
1950 rem *** adresse fuer farbe ***
1960 rem **************************
1970 a0=int(aa/3)
1980 a1=aa-3*a0
1990 e=ad+ab+80*a0-3
2000 fori=0toa1
2010 e=e+3+a(i)
2020 next
2030 e=e-len(l$(aa))
2040 return
2050 rem ********************
2060 rem *** setzen ziffer **
2070 rem ********************
2080 a1$=mid$(l$(aa),ab,1)
2090 fori=0to8
2100 a2$=""
2110 forj=1tolen(l$(i))
2120 a0$=mid$(l$(i),j,1)
2130 ifa0$=a1$then2150
2140 a2$=a2$+a0$:goto2160
2150 a2$=a2$+a$
2160 next
2170 l$(i)=a2$
2180 next
2190 gosub1360
2200 return
2210 rem ***************
2220 rem *** eingabe ***
2230 rem ***************
2240 fori=0to150:next
2250 ei=0:pokee,7
2260 geta$:ifa$=""then2340
2270 ei=asc(a$)
2280 ifei=133then2330
2290 ifei=29thengosub2380
2300 ifei=157thengosub2470
2310 ifei=145thengosub2560
2320 ifei=17thengosub2630
2330 if(ei>47)and(ei<58)thengosub2080
2340 return
2350 rem *********************
2360 rem *** cursor rechts ***
2370 rem *********************
2380 ab=ab+1
2390 ifab<=len(l$(aa))then2420
2400 aa=aa+1:ifaa=9thenaa=0
2410 ab=1
2420 gosub1970
2430 return
2440 rem ********************
2450 rem *** cursor links ***
2460 rem ********************
2470 ab=ab-1
2480 ifab>0then2510
2490 aa=aa-1:ifaa<0thenaa=8
2500 ab=len(l$(aa))
2510 gosub1970
2520 return
2530 rem ******************
2540 rem *** cursor auf ***
2550 rem ******************
2560 aa=aa-3
2570 ifaa<0thenaa=aa+9
2580 ab=1:gosub1970
2590 return
2600 rem *****************
2610 rem *** cursor ab ***
2620 rem *****************
2630 aa=aa+3
2640 ifaa>8thenaa=aa-9
2650 ab=1:gosub1970
2660 return
2670 rem ********************
2680 rem *** anfangswerte ***
2690 rem ********************
2700 poke53280,0:poke53281,0
2710 a=rnd(-ti): rem zufall
2720 dimw(8): rem zahlenwerte
2730 dimw$(5): rem rechenart
2740 diml$(8): rem code
2750 dims$(9): rem code-tabelle
2760 dima(2): rem feldlaenge
2770 ze=214: rem zeile
2780 sp=211: rem spalte
2790 cu=58640: rem cursor setzen
2800 f=55296: rem farbram
2810 b=1024: rem bildram
2820 fori=0to9: rem code laden
2830 reada
2840 s$(i)=chr$(a)
2850 next
2860 data64,97,98,109,110
2870 data113,115,119,120,122
2880 return
2890 rem ***************
2900 rem *** loesung ***
2910 rem ***************
2920 fori=14to17:poke781,i
2930 sys59903:next
2940 pokeze,12:pokesp,15:syscu
2950 printchr$(156)"l o e s u n g"
2960 a(0)=0:a(1)=0:a(2)=0:fori=0to8
2970 fori=0to8
2980 a$=str$(w(i)):a0=len(a$)-1
2990 l$(i)=right$(a$,a0)
3000 a=i-int(i/3)*3
3010 ifa(a)<a0thena(a)=a0
3020 next
3030 a=20-int(a(0)+a(1)+a(2)+6)/2
3040 print
3050 fori=0to6step3
3060 printspc(a+4-len(l$(i)))l$(i);
3070 printspc(1)w$(i/3);
3080 printspc(1+a(1)-len(l$(i+1)))l$(i+1);
3090 printspc(1)"=";
3100 printspc(1+a(2)-len(l$(i+2)))l$(i+2)
3110 ifi>0then3150
3120 printspc(a+a(0)-1)w$(3)spc(2+a(1));
3130 printw$(4)spc(2+a(2))w$(5)
3140 goto3190
3150 ifi=6then3190
3160 a$="":forj=0to2*(20-a)
3170 a$=a$+chr$(96):next
3180 printspc(a)a$
3190 next
3200 return
3210 rem *******************
3220 rem *** erstabfrage ***
3230 rem *******************
3240 printchr$(30)chr$(147)
3250 printspc(14)"zahlen-raetsel"
3260 print
3270 printspc(13)"ein programm von"
3280 print
3290 printspc(17)"g kramer"
3300 printchr$(156):print
3310 printspc(13)"bitte eingeben :"
3320 print:print
3330 printspc(13)"1 = raetsel-loesen"
3340 printspc(13)"2 = nur drucken"
3350 print:printspc(13)"0 = ende"
3360 poke198,0
3370 gete$:ife$="0"then3570
3380 ife$="1"then3570
3390 ife$<>"2"then3370
3400 printchr$(158)chr$(147)
3410 printspc(14)"druckroutine"
3420 print:print
3430 printspc(14)"f3 = druck aufgaben"
3440 printspc(14)"f5 = druck loesungen"
3450 printspc(14)"f7 = druck beide"
3460 print:printchr$(30)
3470 printspc(14)"f1 = ende drucken"
3480 poke198,0
3490 geta$:ifa$=""then3490
3500 ei=asc(a$)
3510 if(ei<133)or(ei>136)then3490
3520 ifei=133then3240
3530 geta$:ifa$=chr$(133)then3240
3540 gosub300:gosub1190
3550 gosub1500
3560 goto3530
3570 return