-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCUBE.BAS
126 lines (126 loc) · 7.35 KB
/
CUBE.BAS
1
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
0 REM |||||||||||||||| CUB DE MONGE : EDITEUR .. |||||||||||||||||||||||||||||||
1 CLEAR:KEY OFF:CLS
10 SCREEN 2:PALETTE 1,13:WINDOW SCREEN (640,400)-(0,0)
20 OPTION BASE 1:DIM LX%(100,2),LY%(100,2),LZ%(100,2)
21 DEFINT X,Y,Z,C,A,N,Q
1000 L=1:LINE (0,0)-(420,200),1,B:LINE(440,0)-(640,200),1,B:LINE (0,200)-(420,400),1,B:P=1:X=155:Y=100:Z=50:LOCATE 15,58:PRINT "VUE DE FACE"
1001 LOCATE 19,56:PRINT "N= 1":N%=1
1010 A$=INKEY$:IF A$<>"" THEN 1020 ELSE C=POINT(X,Y):C1=POINT(Z+440,Y):C2=POINT(X,Z+200):PSET(X,Y):PSET(X,Z+200):PSET(Z+440,Y):PSET(X,Y),C:PSET(X,Z+200),C1:PSET(Z+440,Y),C2:GOTO 1010
1020 IF A$="a" OR A$="A" THEN P=1:LOCATE 15,58:PRINT "VUE DE FACE ":GOTO 1010
1021 IF A$="z" OR A$="Z" THEN P=2:LOCATE 15,58:PRINT "VUE DE GAUCHE":GOTO 1010
1022 IF A$="e" OR A$="E" THEN P=3:LOCATE 15,58:PRINT "VUE DE DESSUS":GOTO 1010
1023 IF A$="l" OR A$="L" THEN 2000
1024 IF A$="i" OR A$="I" THEN DX=SX:DY=SY:DZ=SZ:SZ=PZ:Z=PZ:X=PX:Y=PY:SX=PX:SY=PY:PX=DX:PY=DY:PZ=DZ:DZ=0:DY=0:DX=0:GOTO 1010
1025 IF A$="P" OR A$="p" THEN 2050
1026 IF A$="D" OR A$="d" THEN 2060
1027 IF A$="H" OR A$="h" THEN 3000
1028 IF A$="c" OR A$="C" THEN 2100
1029 IF A$="T" OR A$="t" THEN 2150
1090 IF V=1 THEN 2000
1100 ON P GOTO 1101,1160,1210
1101 IF A$="6" THEN X=X+N
1102 IF A$="4" OR A$="|" THEN X=X-N
1103 IF A$="2" OR A$="`" THEN Y=Y+N
1104 IF A$="8" OR A$="~" THEN Y=Y-N
1119 IF X<=0 THEN X=419
1120 IF X>=420 THEN X=1
1130 IF Y<=0 THEN Y=199
1140 IF Y>=200 THEN Y=1
1150 GOTO 1010
1160 IF A$="6" THEN Z=Z+N
1162 IF A$="4" OR A$="|" THEN Z=Z-N
1163 IF A$="2" OR A$="`" THEN Y=Y+N
1164 IF A$="8" OR A$="~" THEN Y=Y-N
1169 IF Z<=0 THEN Z=199
1170 IF Z>=200 THEN Z=1
1180 IF Y<=0 THEN Y=199
1190 IF Y>=200 THEN Y=1
1200 GOTO 1010
1210 IF A$="6" THEN X=X+N
1211 IF A$="4" OR A$="|" THEN X=X-N
1212 IF A$="2" OR A$="`" THEN Z=Z+N
1213 IF A$="8" OR A$="~" THEN Z=Z-N
1219 IF X<=0 THEN X=419
1220 IF X>=420 THEN X=1
1230 IF Z<=0 THEN Z=199
1240 IF Z>=200 THEN Z=1
1260 GOTO 1010
2000 IF V<>0 THEN IF A<>1 THEN 2002 ELSE 2004
2001 LOCATE 16,56:PRINT "<ESP> pour le 1er Point":V=1:GOTO 1010
2002 IF A$=" " THEN A$="":A=1 :GOTO 2003 ELSE 1100
2003 PX=X:PY=Y:PZ=Z:SX=X:SY=Y:SZ=Z:LOCATE 16,56:PRINT "<ESP> pour valider "
2004 IF A$=" " THEN A=0:LY%(L,1)=PY:LY%(L,2)=SY:LX%(L,1)=PX:LX%(L,2)=SX:LZ%(L,1)=PZ:LZ%(L,2)=SZ:V=0:L=L+1:LOCATE 16,56:PRINT " ":GOTO 1010
2005 IF SZ=Z AND SY=Y AND SX= X THEN 1100
2010 LINE (PX,PY)-(SX,SY),0:LINE (PX,PZ+200)-(SX,SZ+200),0:LINE(PZ+440,PY)-(SZ+440,SY),0:SX=X:SY=Y:SZ=Z:LINE(PX,PY)-(X,Y):LINE(PX,PZ+200)-(X,Z+200):LINE(PZ+440,PY)-(Z+440,Y):GOTO 1010
2050 LOCATE 18,56:PRINT "X=";X;"Y=";Y;"Z=";Z
2051 LOCATE 17,56:INPUT "X= ",Q:IF Q<=0 OR Q>=420 THEN BEEP:GOTO 2050 ELSE X=Q
2052 LOCATE 17,56:INPUT "Y= ",Q:IF Q<=0 OR Q>=200 THEN BEEP:GOTO 2050 ELSE Y=Q
2053 LOCATE 17,56:INPUT "Z= ",Q:IF Q<=0 OR Q>=200 THEN BEEP:GOTO 2050 ELSE Z=Q
2054 LOCATE 18,56:PRINT " ":LOCATE 17,56:PRINT SPACE$(14);:GOTO 1010
2060 LOCATE 17,56:INPUT "N. DE POINT ",N:IF N=0 THEN N=1
2061 LOCATE 19,56:PRINT "N=";N:LOCATE 17,56:PRINT SPACE$(14);
2062 GOTO 1010
2100 LOCATE 17,56:INPUT "ArrŠte : ",AR
2101 LOCATE 17,56:PRINT SPACE$(24);
2102 LOCATE 17,56:INPUT "pos x,y,z ",GX,GY,GZ
2103 LOCATE 17,56:PRINT SPACE$(24);
2104 IF AR+GX>420 THEN BEEP :GOTO 2100
2105 IF AR+GY>200 THEN BEEP :GOTO 2100
2106 IF AR+GZ>200 THEN BEEP :GOTO 2100
2107 LX%(L,1)=GX:LY%(L,1)=GY:LZ%(L,1)=GZ:LX%(L,2)=GX:LY%(L,2)=GY:LZ%(L,2)=GZ+AR:L=L+1
2108 LX%(L,1)=GX:LY%(L,1)=GY:LZ%(L,1)=GZ:LX%(L,2)=GX:LY%(L,2)=GY+AR:LZ%(L,2)=GZ:L=L+1
2109 LX%(L,1)=GX:LY%(L,1)=GY+AR:LZ%(L,1)=GZ:LX%(L,2)=GX+AR:LY%(L,2)=GY+AR:LZ%(L,2)=GZ:L=L+1
2110 LX%(L,1)=GX:LY%(L,1)=GY+AR:LZ%(L,1)=GZ:LX%(L,2)=GX:LY%(L,2)=GY+AR:LZ%(L,2)=GZ+AR:L=L+1
2111 LX%(L,1)=GX:LY%(L,1)=GY:LZ%(L,1)=GZ:LX%(L,2)=GX+AR:LY%(L,2)=GY:LZ%(L,2)=GZ:L=L+1
2112 LX%(L,1)=GX+AR:LY%(L,1)=GY+AR:LZ%(L,1)=GZ+AR:LX%(L,2)=GX+AR:LY%(L,2)=GY+AR:LZ%(L,2)=GZ:L=L+1
2113 LX%(L,1)=GX+AR:LY%(L,1)=GY+AR:LZ%(L,1)=GZ+AR:LX%(L,2)=GX+AR:LY%(L,2)=GY:LZ%(L,2)=GZ+AR:L=L+1
2114 LX%(L,1)=GX+AR:LY%(L,1)=GY+AR:LZ%(L,1)=GZ+AR:LX%(L,2)=GX:LY%(L,2)=GY+AR:LZ%(L,2)=GZ+AR:L=L+1
2115 LX%(L,1)=GX+AR:LY%(L,1)=GY:LZ%(L,1)=GZ:LX%(L,2)=GX+AR:LY%(L,2)=GY:LZ%(L,2)=GZ+AR:L=L+1
2116 LX%(L,1)=GX+AR:LY%(L,1)=GY:LZ%(L,1)=GZ:LX%(L,2)=GX+AR:LY%(L,2)=GY+AR:LZ%(L,2)=GZ:L=L+1
2117 LX%(L,1)=GX:LY%(L,1)=GY:LZ%(L,1)=GZ+AR:LX%(L,2)=GX:LY%(L,2)=GY+AR:LZ%(L,2)=GZ+AR:L=L+1
2118 LX%(L,1)=GX:LY%(L,1)=GY:LZ%(L,1)=GZ+AR:LX%(L,2)=GX+AR:LY%(L,2)=GY:LZ%(L,2)=GZ+AR:L=L+1
2119 LINE (GX,GY)-(GX+AR,GY+AR),1,B:LINE (GX,GZ+200)-(GX+AR,GZ+AR+200),1,B:LINE (GZ+440,GY)-(GZ+AR+440,GY+AR),1,B
2130 GOTO 1010
2150 LOCATE 17,56:INPUT "l. PETIT COTE ",M:M=INT(M)
2151 LOCATE 17,56:PRINT SPACE$(24);
2152 LOCATE 17,56:INPUT "pos x,y,z",GX,GY,GZ
2153 LOCATE 17,56:PRINT SPACE$(24);
2154 LOCATE 17,56:INPUT "PROFONDEUR pt cot‚",D
2155 LOCATE 17,56:PRINT SPACE$(24);
2156 IF GX<0 OR GY<0 OR GZ<0 THEN 2150
2157 IF GZ+D>=200 OR GX+D>=440 OR GY+D>=200 THEN GOTO 2150
2158 LOCATE 17,56:INPUT "l. GRAND COTE ",P:P=INT(P)
2159 LOCATE 17,56:PRINT SPACE$(24);
2160 LOCATE 17,56:INPUT "pos x,y,z",G1X,G1Y,G1Z
2161 LOCATE 17,56:PRINT SPACE$(24);
2162 LOCATE 17,56:INPUT "PROFONDEUR pt cot‚",D1
2163 LOCATE 17,56:PRINT SPACE$(24);
2164 IF G1X<0 OR G1Y<0 OR G1Z<0 THEN 2158
2165 IF G1Z+D1>=200 OR G1X+D1>=440 OR G1Y+D1>=200 THEN 2158
2166 LX%(L,1)=GX:LY%(L,1)=GY:LZ%(L,1)=GZ:LX%(L,2)=GX:LY%(L,2)=GY:LZ%(L,2)=GZ+D:L=L+1
2167 LX%(L,1)=GX:LY%(L,1)=GY:LZ%(L,1)=GZ:LX%(L,2)=GX+M:LY%(L,2)=GY:LZ%(L,2)=GZ:L=L+1
2168 LX%(L,1)=GX+M:LY%(L,1)=GY:LZ%(L,1)=GZ+D:LX%(L,2)=GX+M:LY%(L,2)=GY:LZ%(L,2)=GZ:L=L+1
2169 LX%(L,1)=GX+M:LY%(L,1)=GY:LZ%(L,1)=GZ+D:LX%(L,2)=GX:LY%(L,2)=GY:LZ%(L,2)=GZ+D:L=L+1
2170 LX%(L,1)=G1X:LY%(L,1)=G1Y:LZ%(L,1)=G1Z:LX%(L,2)=G1X:LY%(L,2)=G1Y:LZ%(L,2)=G1Z+D1:L=L+1
2171 LX%(L,1)=G1X:LY%(L,1)=G1Y:LZ%(L,1)=G1Z:LX%(L,2)=G1X+P:LY%(L,2)=G1Y:LZ%(L,2)=G1Z:L=L+1
2172 LX%(L,1)=G1X+P:LY%(L,1)=G1Y:LZ%(L,1)=G1Z+D1:LX%(L,2)=G1X+P:LY%(L,2)=G1Y:LZ%(L,2)=G1Z:L=L+1
2173 LX%(L,1)=G1X+P:LY%(L,1)=G1Y:LZ%(L,1)=G1Z+D1:LX%(L,2)=G1X:LY%(L,2)=G1Y:LZ%(L,2)=G1Z+D1:L=L+1
2174 LX%(L,1)=GX:LY%(L,1)=GY:LZ%(L,1)=GZ:LX%(L,2)=G1X:LY%(L,2)=G1Y:LZ%(L,2)=G1Z:L=L+1
2175 LX%(L,1)=GX+M:LY%(L,1)=GY:LZ%(L,1)=GZ:LX%(L,2)=G1X+P:LY%(L,2)=G1Y:LZ%(L,2)=G1Z:L=L+1
2176 LX%(L,1)=GX+M:LY%(L,1)=GY:LZ%(L,1)=GZ+D:LX%(L,2)=G1X+P:LY%(L,2)=G1Y:LZ%(L,2)=G1Z+D1:L=L+1
2177 LX%(L,1)=GX:LY%(L,1)=GY:LZ%(L,1)=GZ+D:LX%(L,2)=G1X:LY%(L,2)=G1Y:LZ%(L,2)=G1Z+D1:L=L+1
2178 LINE (GX,GY)-(GX+M,GY),1:LINE(G1X,G1Y)-(G1X+P,G1Y),1:LINE(GX,GY)-(G1X,G1Y),1:LINE (GX+M,GY)-(G1X+P,G1Y),1
2179 LINE (GZ+440,GY)-(GZ+440+D,GY),1:LINE(G1Z+440,G1Y)-(G1Z+D1+440,G1Y),1:LINE (GZ+440,GY)-(G1Z+440,G1Y),1:LINE (GZ+440+D,GY)-(G1Z+440+D1,G1Y),1
2180 LINE (GX,GZ+200)-(GX+M,GZ+200),1,,21845:LINE -(GX+M,GZ+200+D),1,,21845:LINE -(GX,GZ+D+200),1,,21845:LINE -(GX,GZ+200),1,,21845
2181 LINE (G1X,G1Z+200)-(G1X+P,G1Z+200),1:LINE -(G1X+P,G1Z+200+D1),1:LINE -(G1X,G1Z+D1+200),1:LINE -(G1X,G1Z+200),1
2199 GOTO 1010
3000 CLS:FOR I=1 TO L-1
3010 P1X=LX%(I,1)+(.5*LZ%(I,1)/1.414):P1Y=LY%(I,1)+(.5*LZ%(I,1)/1.414)
3020 P2X=LX%(I,2)+(.5*LZ%(I,2)/1.414):P2Y=LY%(I,2)+(.5*LZ%(I,2)/1.414)
3030 LINE (P1X+80,P1Y+50)-(P2X+80,P2Y+50),1:NEXT
3040 A$=INPUT$(1):IF A$=CHR$(27) THEN END
3041 CLS:LINE (0,0)-(420,200),1,B:LINE(440,0)-(640,200),1,B:LINE (0,200)-(420,400),1,B:P=1:X=155:Y=100:Z=50:LOCATE 15,58:PRINT "VUE DE FACE"
3050 FOR I=1 TO L-1
3060 LINE(LX%(I,1),LY%(I,1))-(LX%(I,2),LY%(I,2)),1:LINE (LZ%(I,1)+440,LY%(I,1))-(LZ%(I,2)+440,LY%(I,2)),1:LINE (LX%(I,1),LZ%(I,1)+200)-(LX%(I,2),LZ%(I,2)+200),1
3065 NEXT :GOTO 1010