File tree Expand file tree Collapse file tree 4 files changed +82
-1
lines changed Expand file tree Collapse file tree 4 files changed +82
-1
lines changed Original file line number Diff line number Diff line change 1+ [package ]
2+ name = " rust"
3+ version = " 0.1.0"
4+ edition = " 2021"
5+
6+ [dependencies ]
Original file line number Diff line number Diff line change 1+ /** 3D Plot GAME
2+ * https://github.com/coding-horror/basic-computer-games/blob/main/87_3-D_Plot/3dplot.bas
3+ * Direct conversion from BASIC to Rust by Pablo Marques (marquesrs).
4+ * No additional features or improvements were added. As a faithful translation,
5+ * many of the code here are done in an unrecommended way by today's standards.
6+ * 03/03/25
7+ */
8+
9+ fn main ( ) {
10+ //1 PRINT TAB(32);"3D PLOT"
11+ //2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
12+ //3 PRINT:PRINT:PRINT
13+ print ! ( "{}" ,
14+ format!( "{}{}\n {}{}\n \n \n \n " ,
15+ " " . repeat( 31 ) ,
16+ "3D PLOT" ,
17+ " " . repeat( 14 ) ,
18+ "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
19+ )
20+ ) ;
21+
22+ //5 DEF FNA(Z)=30*EXP(-Z*Z/100)
23+ let fna = |z : f32 | { 30.0 * f32:: exp ( -z* z/100.0 ) } ;
24+
25+ //100 PRINT
26+ println ! ( ) ;
27+
28+ let mut line_content = String :: new ( ) ;
29+ //110 FOR X=-30 TO 30 STEP 1.5
30+ let mut x = -30.0 ;
31+ while x <= 30.0 {
32+ //120 L=0
33+ let mut l = 0 ;
34+
35+ //130 Y1=5*INT(SQR(900-X*X)/5)
36+ let y1 = 5.0 * ( f32:: sqrt ( 900.0 -x* x) /5.0 ) . floor ( ) ;
37+
38+ //140 FOR Y=Y1 TO -Y1 STEP -5
39+ let mut y = y1;
40+ while y >= -y1 {
41+ //150 Z=INT(25+FNA(SQR(X*X+Y*Y))-.7*Y)
42+ let z = ( 25.0 + fna ( f32:: sqrt ( x* x+y* y) ) -0.7 * y) as i32 ;
43+
44+ //160 IF Z<=L THEN 190
45+ if z <= l {
46+ y = y - 5.0 ;
47+ continue ;
48+ }
49+ //170 L=Z
50+ l = z;
51+ //180 PRINT TAB(Z);"*";
52+ while ( line_content. len ( ) as i32 ) < ( z-1 ) {
53+ line_content += " " ;
54+ }
55+ line_content += "*" ;
56+ //190 NEXT Y
57+ y = y - 5.0 ;
58+ }
59+ print ! ( "{}" , line_content) ;
60+ line_content. clear ( ) ;
61+
62+ //200 PRINT
63+ println ! ( ) ;
64+ //210 NEXT X
65+ x = x + 1.5 ;
66+ }
67+ //300 END
68+ }
Original file line number Diff line number Diff line change @@ -164,7 +164,7 @@ NOTE: per [the official blog post announcement](https://blog.codinghorror.com/up
164164| 84_Super_Star_Trek | x | x | x | | | | x | | x | x |
165165| 85_Synonym | x | x | x | | | x | x | x | x | x |
166166| 86_Target | x | x | x | | | x | x | | | x |
167- | 87_3-D_Plot | x | x | x | | | x | x | x | | x |
167+ | 87_3-D_Plot | x | x | x | | | x | x | x | x | x |
168168| 88_3-D_Tic-Tac-Toe | x | | x | | | | x | | | x |
169169| 89_Tic-Tac-Toe | x | x | x | x | | x | x | | x | x |
170170| 90_Tower | x | x | x | | | x | x | | x | x |
You can’t perform that action at this time.
0 commit comments