mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-05 20:40:25 -08:00
3D plot game initial rust implementation
This commit is contained in:
7
87_3-D_Plot/rust/Cargo.lock
generated
Normal file
7
87_3-D_Plot/rust/Cargo.lock
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "rust"
|
||||
version = "0.1.0"
|
||||
6
87_3-D_Plot/rust/Cargo.toml
Normal file
6
87_3-D_Plot/rust/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "rust"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
68
87_3-D_Plot/rust/src/main.rs
Normal file
68
87_3-D_Plot/rust/src/main.rs
Normal file
@@ -0,0 +1,68 @@
|
||||
/** 3D Plot GAME
|
||||
* https://github.com/coding-horror/basic-computer-games/blob/main/87_3-D_Plot/3dplot.bas
|
||||
* Direct conversion from BASIC to Rust by Pablo Marques (marquesrs).
|
||||
* No additional features or improvements were added. As a faithful translation,
|
||||
* many of the code here are done in an unrecommended way by today's standards.
|
||||
* 03/03/25
|
||||
*/
|
||||
|
||||
fn main() {
|
||||
//1 PRINT TAB(32);"3D PLOT"
|
||||
//2 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||
//3 PRINT:PRINT:PRINT
|
||||
print!("{}",
|
||||
format!("{}{}\n{}{}\n\n\n\n",
|
||||
" ".repeat(31),
|
||||
"3D PLOT",
|
||||
" ".repeat(14),
|
||||
"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||
)
|
||||
);
|
||||
|
||||
//5 DEF FNA(Z)=30*EXP(-Z*Z/100)
|
||||
let fna = |z: f32| {30.0 * f32::exp(-z*z/100.0)};
|
||||
|
||||
//100 PRINT
|
||||
println!();
|
||||
|
||||
let mut line_content = String::new();
|
||||
//110 FOR X=-30 TO 30 STEP 1.5
|
||||
let mut x = -30.0;
|
||||
while x <= 30.0 {
|
||||
//120 L=0
|
||||
let mut l = 0;
|
||||
|
||||
//130 Y1=5*INT(SQR(900-X*X)/5)
|
||||
let y1 = 5.0 * (f32::sqrt(900.0-x*x)/5.0).floor();
|
||||
|
||||
//140 FOR Y=Y1 TO -Y1 STEP -5
|
||||
let mut y = y1;
|
||||
while y >= -y1 {
|
||||
//150 Z=INT(25+FNA(SQR(X*X+Y*Y))-.7*Y)
|
||||
let z = (25.0 + fna(f32::sqrt(x*x+y*y))-0.7*y) as i32;
|
||||
|
||||
//160 IF Z<=L THEN 190
|
||||
if z <= l {
|
||||
y = y - 5.0;
|
||||
continue;
|
||||
}
|
||||
//170 L=Z
|
||||
l = z;
|
||||
//180 PRINT TAB(Z);"*";
|
||||
while (line_content.len() as i32) < (z-1) {
|
||||
line_content += " ";
|
||||
}
|
||||
line_content += "*";
|
||||
//190 NEXT Y
|
||||
y = y - 5.0;
|
||||
}
|
||||
print!("{}", line_content);
|
||||
line_content.clear();
|
||||
|
||||
//200 PRINT
|
||||
println!();
|
||||
//210 NEXT X
|
||||
x = x + 1.5;
|
||||
}
|
||||
//300 END
|
||||
}
|
||||
@@ -164,7 +164,7 @@ NOTE: per [the official blog post announcement](https://blog.codinghorror.com/up
|
||||
| 84_Super_Star_Trek | x | x | x | | | | x | | x | x |
|
||||
| 85_Synonym | x | x | x | | | x | x | x | x | x |
|
||||
| 86_Target | x | x | x | | | x | x | | | x |
|
||||
| 87_3-D_Plot | x | x | x | | | x | x | x | | x |
|
||||
| 87_3-D_Plot | x | x | x | | | x | x | x | x | x |
|
||||
| 88_3-D_Tic-Tac-Toe | x | | x | | | | x | | | x |
|
||||
| 89_Tic-Tac-Toe | x | x | x | x | | x | x | | x | x |
|
||||
| 90_Tower | x | x | x | | | x | x | | x | x |
|
||||
|
||||
Reference in New Issue
Block a user