Hallo Leute,
hier ein kleines Basic-Programm zum Zeichnen von Vielecken.
Gruss,
Neptun
Code
1 goto10
2 b=xe(x)+ye(y):pokeb,peek(b)orbi(x):return:rem pixel setzen
10 dimc(61e2):clr:v=53248:pokev+33,.:pokev+32,11:c$=chr$(147):u$=chr$(145)
11 d$=chr$(17):printchr$(5)c$d$" regelmaessige vielecke"d$d$
12 fori=1105toi+21:pokei,99:next
14 input" eckenzahl(3-16)";n$:n=val(n$):ifn<3orn>16orn<>int(n)then14
15 printd$" bitte warten.":dim b,x,y,x1,y1,x2,y2,dx,dy,j,m
20 a=24576:c=39:d=504:e=7:g=160.5:k=100.5:r1=96:r2=r1:l=15:s=1:t=255:p=4*atn(1)
25 vr=23552:k$="-koordinaten"
30 dim xe(319),ye(199),bi(319),h(e),xp(n-1),yp(n-1)
33 printd$" berechne"chr$(13)d$" eckpunkte:"
35 fori=.ton-1:w=2*p/n*i:print(i+1)u$
36 xp(i)=int(g+r1*sin(w))
37 yp(i)=int(k-r2*cos(w))
38 next
40 fori=.toe:h(e-i)=s:s=s+s:next
45 printd$d$" x"k$"+bits:"
50 fori=.to319:xe(i)=iandd:bi(i)=h(iande):if(iandl)=.thenprinti;u$
51 next
55 printd$d$" y"k$":"
60 fori=.to199:ye(i)=a+c*(iandd)+i:if(iandl)=.thenprinti;u$
61 next
62 printd$d$" belege videoram"
63 poke648,vr/256:printc$;:fori=.to110:print"ppppppppp";:next:pokevr+999,16
64 poke648,4:printchr$(19)
70 pokev+17,59:pokev+24,16*7+8:poke56576,150
71 b=24*320:m=8*39
72 fori=atoa+bstep320:forj=itoi+7:pokej,128:pokej+m,1:next:next
73 fori=atoa+mstep8:pokei,t:pokei+b+7,t:next
80 rem vieleck zeichnen
85 fori=.ton-2:x1=xp(i):y1=yp(i)
90 forj=i+1ton-1:x2=xp(j):y2=yp(j):gosub200:next:next
100 gosub400:rem textausgabe
110 fori=.to99:pokev+32,i:next:pokev+32,11:poke198,.:wait198,1
120 poke56576,151:pokev+17,27:pokev+24,20:printc$:poke198,.
130 end
190 :
200 rem linie ziehen
205 dx=x2-x1:dy=y2-y1
220 ifdy=.theny=y1:forx=x1tox2stepsgn(dx):gosub2:next:return
230 ifdx=.thenx=x1:fory=y1toy2stepsgn(dy):gosub2:next:return
240 ifabs(dy)>abs(dx)then300
250 f=dy/dx:forx=x1tox2stepsgn(dx):y=y1+f*(x-x1):gosub2:next:return
300 f=dx/dy:fory=y1toy2stepsgn(dy):x=x1+f*(y-y1):gosub2:next:return
400 rem text in bitmap ausgeben
405 x$=str$(n)+"-eck ":b1=a+328
410 poke56334,.:poke1,51
420 fori=.tolen(x$)-1:b2=v+8*(asc(mid$(x$,i+1,1))andnot64):pokevr+i+41,16*1+6
430 forj=b2toj+7:pokeb1,peek(j):b1=b1+1:next:next
450 poke1,55:poke56334,1
460 return
499 :
500 rem (c) 2019 by neptun
510 :
Display More