From e60957ad7e06c23d17da1cade88ce45cf08c5202 Mon Sep 17 00:00:00 2001 From: marquesrs <80490672+marquesrs@users.noreply.github.com> Date: Sun, 23 Feb 2025 15:08:18 -0300 Subject: [PATCH 1/6] init --- 13_Bounce/rust/Cargo.lock | 7 ++ 13_Bounce/rust/Cargo.toml | 6 ++ 13_Bounce/rust/src/main.rs | 160 +++++++++++++++++++++++++++++++++++++ 3 files changed, 173 insertions(+) create mode 100644 13_Bounce/rust/Cargo.lock create mode 100644 13_Bounce/rust/Cargo.toml create mode 100644 13_Bounce/rust/src/main.rs diff --git a/13_Bounce/rust/Cargo.lock b/13_Bounce/rust/Cargo.lock new file mode 100644 index 00000000..b21cc6a2 --- /dev/null +++ b/13_Bounce/rust/Cargo.lock @@ -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" diff --git a/13_Bounce/rust/Cargo.toml b/13_Bounce/rust/Cargo.toml new file mode 100644 index 00000000..7d75412a --- /dev/null +++ b/13_Bounce/rust/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "rust" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/13_Bounce/rust/src/main.rs b/13_Bounce/rust/src/main.rs new file mode 100644 index 00000000..0028aaaf --- /dev/null +++ b/13_Bounce/rust/src/main.rs @@ -0,0 +1,160 @@ +use std::io::Write; + +fn input(msg: &str) -> String { + print!("{}", msg); + let _ =std::io::stdout().flush().unwrap(); + let mut input = String::new(); + std::io::stdin().read_line(&mut input).unwrap(); + return input.trim().to_uppercase(); +} + +fn main() { + //10 PRINT TAB(33);"BOUNCE" + //20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" + //30 PRINT:PRINT:PRINT + print!("{}{}\n{}{}\n\n\n", + " ".repeat(33), + "BOUNCE", + " ".repeat(15), + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" + ); + + //90 DIM T(20) + let mut t: Vec = Vec::with_capacity(20); + + //100 PRINT "THIS SIMULATION LETS YOU SPECIFY THE INITIAL VELOCITY" + //110 PRINT "OF A BALL THROWN STRAIGHT UP, AND THE COEFFICIENT OF" + //120 PRINT "ELASTICITY OF THE BALL. PLEASE USE A DECIMAL FRACTION" + //130 PRINT "COEFFICIENCY (LESS THAN 1)." + //131 PRINT + //132 PRINT "YOU ALSO SPECIFY THE TIME INCREMENT TO BE USED IN" + //133 PRINT "'STROBING' THE BALL'S FLIGHT (TRY .1 INITIALLY)." + //134 PRINT + print!("{}\n{}\n{}\n{}\n\n{}\n{}\n\n", + "THIS SIMULATION LETS YOU SPECIFY THE INITIAL VELOCITY", + "OF A BALL THROWN STRAIGHT UP, AND THE COEFFICIENT OF", + "ELASTICITY OF THE BALL. PLEASE USE A DECIMAL FRACTION", + "COEFFICIENCY (LESS THAN 1).", + "YOU ALSO SPECIFY THE TIME INCREMENT TO BE USED IN", + "'STROBING' THE BALL'S FLIGHT (TRY .1 INITIALLY).", + ); + + loop { + //135 INPUT "TIME INCREMENT (SEC)";S2 + let s2 = input("TIME INCREMENT (SEC): ").parse::().unwrap(); + + //140 PRINT + println!(); + + //150 INPUT "VELOCITY (FPS)";V + let v = input("VELOCITY (FPS): ").parse::().unwrap(); + + //160 PRINT + println!(); + + //170 INPUT "COEFFICIENT";C + let c = input("COEFFICIENT: ").parse::().unwrap(); + + //180 PRINT + //182 PRINT "FEET" + //184 PRINT + print!("\nFEET\n"); + + //186 S1=INT(70/(V/(16*S2))) + let s1 = ( + 70.0 / (v / (16.0 * s2) ) + ) as i32; + + //190 FOR I=1 TO S1 + for i in 1..=s1 { + //200 T(I)=V*C^(I-1)/16 + t.push(v * c.powf(i as f32 - 1.0) / 16.0); + //210 NEXT I + } + + let mut l = 0.0; + + //220 FOR H=INT(-16*(V/32)^2+V^2/32+.5) TO 0 STEP -.5 + let mut h = ((-16.0*(v/32.0).powf(2.0)) +(v.powf(2.0)/32.0) + 0.5).floor(); + while h >= 0.0 { + //221 IF INT(H)<>H THEN 225 + if h.floor() != h { + //225 L=0 + l = 0.0; + } + else { + //222 PRINT H; + println!("{}", h); + //225 L=0 + l = 0.0; + } + + //230 FOR I=1 TO S1 + for i in 1..=s1 { + let mut t2 = 0.0; + //240 FOR T=0 TO T(I) STEP S2 + while t2 <= t[(i - 1) as usize] { + //245 L=L+S2 + l = l + s2; + + //250 IF ABS(H-(.5*(-32)*T^2+V*C^(I-1)*T))>.25 THEN 270 + let condition = h - (0.5 * (-32.0) * t2.powf(2.0) + v * c.powf((i-1) as f32) * t2); + if condition >= 0.25{ + continue; + } + //260 PRINT TAB(L/S2);"0"; + print!("{}0", " ".repeat((l/s2) as usize)); + + //270 NEXT T + t2 = t2 + s2; + } + + //275 T=T(I+1)/2 + t2 = t[i as usize] / 2.0; + + //276 IF -16*T^2+V*C^(I-1)*T Date: Sun, 2 Mar 2025 10:20:33 -0300 Subject: [PATCH 2/6] bounce game initial rust implementation --- 13_Bounce/rust/src/main.rs | 10 ++++------ README.md | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/13_Bounce/rust/src/main.rs b/13_Bounce/rust/src/main.rs index 0028aaaf..1490ca87 100644 --- a/13_Bounce/rust/src/main.rs +++ b/13_Bounce/rust/src/main.rs @@ -61,9 +61,7 @@ fn main() { print!("\nFEET\n"); //186 S1=INT(70/(V/(16*S2))) - let s1 = ( - 70.0 / (v / (16.0 * s2) ) - ) as i32; + let s1 = (70.0 / (v / (16.0 * s2))).floor() as i32; // verified //190 FOR I=1 TO S1 for i in 1..=s1 { @@ -75,10 +73,10 @@ fn main() { let mut l = 0.0; //220 FOR H=INT(-16*(V/32)^2+V^2/32+.5) TO 0 STEP -.5 - let mut h = ((-16.0*(v/32.0).powf(2.0)) +(v.powf(2.0)/32.0) + 0.5).floor(); - while h >= 0.0 { + let mut h = (-16.0 * (v / 32.0).powi(2) + (v.powi(2)) / 32.0 + 0.5).floor() as i32; // verified + while h >= 0 { //221 IF INT(H)<>H THEN 225 - if h.floor() != h { + if h != h { //225 L=0 l = 0.0; } diff --git a/README.md b/README.md index 1ba366b8..d7a19ef8 100644 --- a/README.md +++ b/README.md @@ -89,20 +89,20 @@ NOTE: per [the official blog post announcement](https://blog.codinghorror.com/up | 09_Battle | x | x | x | | | | x | | x | x | | 10_Blackjack | x | x | x | | | | x | x | x | x | | 11_Bombardment | x | x | x | | | x | x | x | x | x | -| 12_Bombs_Away | x | x | x | | x | x | x | | | x | -| 13_Bounce | x | x | x | | | x | x | x | | x | +| 12_Bombs_Away | x | x | x | | x | x | x | | x | x | +| 13_Bounce | x | x | x | | | x | x | x | x | x | | 14_Bowling | x | x | x | | | x | x | | | x | | 15_Boxing | x | x | x | | | x | x | | | x | | 16_Bug | x | x | x | | | | x | x | | x | | 17_Bullfight | x | x | x | x | | | x | | | x | | 18_Bullseye | x | x | x | | | x | x | | x | x | -| 19_Bunny | x | x | x | | | x | x | x | | x | +| 19_Bunny | x | x | x | | | x | x | x | x | x | | 20_Buzzword | x | x | x | | x | x | x | x | x | x | | 21_Calendar | x | x | x | | | x | x | x | x | x | | 22_Change | x | x | x | | | x | x | | x | x | | 23_Checkers | x | | x | | | x | x | x | | x | | 24_Chemist | x | x | x | | | x | x | | x | x | -| 25_Chief | x | x | x | | x | x | x | x | | x | +| 25_Chief | x | x | x | | x | x | x | x | x | x | | 26_Chomp | x | x | x | | | x | x | | | x | | 27_Civil_War | x | x | x | | | | x | | | x | | 28_Combat | x | x | x | | | x | x | | | x | @@ -120,33 +120,33 @@ NOTE: per [the official blog post announcement](https://blog.codinghorror.com/up | 40_Gomoko | x | x | x | | | x | x | | | x | | 41_Guess | x | x | x | | | x | x | x | x | x | | 42_Gunner | x | x | x | | | x | x | | | x | -| 43_Hammurabi | x | x | x | | | | x | | | x | +| 43_Hammurabi | x | x | x | | | | x | | x | x | | 44_Hangman | x | x | x | | | x | x | x | | x | -| 45_Hello | x | x | x | | x | x | x | x | | x | +| 45_Hello | x | x | x | | x | x | x | x | x | x | | 46_Hexapawn | x | | | | | | x | | | x | | 47_Hi-Lo | x | | x | x | x | x | x | x | x | x | | 48_High_IQ | x | x | x | | | | x | | | x | | 49_Hockey | x | | x | | | | x | | | x | | 50_Horserace | x | x | x | | | | | | x | x | | 51_Hurkle | x | x | x | | | x | x | x | x | x | -| 52_Kinema | x | x | x | | | x | x | x | | x | +| 52_Kinema | x | x | x | | | x | x | x | x | x | | 53_King | x | | x | | | | x | | x | x | | 54_Letter | x | x | x | | | x | x | x | x | x | | 55_Life | x | x | x | | | x | x | x | x | x | | 56_Life_for_Two | x | x | x | | | x | x | | | x | | 57_Literature_Quiz | x | x | x | | | x | x | | x | x | -| 58_Love | x | x | x | | | x | x | x | | x | +| 58_Love | x | x | x | | | x | x | x | x | x | | 59_Lunar_LEM_Rocket | x | | x | | | | x | | x | x | | 60_Mastermind | x | x | x | | | x | x | | x | x | | 61_Math_Dice | x | x | x | | | x | x | x | x | x | | 62_Mugwump | x | x | x | | | x | x | | x | x | -| 63_Name | x | x | x | x | | x | x | x | | x | +| 63_Name | x | x | x | x | | x | x | x | x | x | | 64_Nicomachus | x | x | x | | | x | x | | x | x | | 65_Nim | x | | x | | | | x | x | x | x | | 66_Number | x | x | x | | | x | x | | x | x | | 67_One_Check | x | x | x | | | x | x | | | x | | 68_Orbit | x | x | x | | | x | x | x | x | x | -| 69_Pizza | x | x | x | | | x | x | x | | x | +| 69_Pizza | x | x | x | | | x | x | x | x | x | | 70_Poetry | x | x | x | | | x | x | x | | x | | 71_Poker | x | x | x | | | | | | | x | | 72_Queen | x | | x | | | x | x | | x | x | @@ -154,7 +154,7 @@ NOTE: per [the official blog post announcement](https://blog.codinghorror.com/up | 74_Rock_Scissors_Paper | x | x | x | x | | x | x | x | x | x | | 75_Roulette | x | x | x | | | x | x | | x | x | | 76_Russian_Roulette | x | x | x | x | | x | x | x | x | x | -| 77_Salvo | x | | x | | | | x | | | x | +| 77_Salvo | x | | x | | | | x | | x | x | | 78_Sine_Wave | x | x | x | x | | x | x | x | x | x | | 79_Slalom | x | | x | | | | x | | | x | | 80_Slots | x | x | x | | | x | x | x | | x | @@ -162,7 +162,7 @@ NOTE: per [the official blog post announcement](https://blog.codinghorror.com/up | 82_Stars | x | x | x | | | x | x | x | x | x | | 83_Stock_Market | x | x | x | | | | x | | | x | | 84_Super_Star_Trek | x | x | x | | | | x | | x | x | -| 85_Synonym | x | 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 | | 88_3-D_Tic-Tac-Toe | x | | x | | | | x | | | x | From 847c9eeca1bc68de23eff7d1b5e237b48748ae64 Mon Sep 17 00:00:00 2001 From: marquesrs <80490672+marquesrs@users.noreply.github.com> Date: Mon, 3 Mar 2025 01:26:31 -0300 Subject: [PATCH 3/6] bounce game initial rust implementation --- 13_Bounce/rust/src/main.rs | 49 +++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/13_Bounce/rust/src/main.rs b/13_Bounce/rust/src/main.rs index 1490ca87..32fc6ea7 100644 --- a/13_Bounce/rust/src/main.rs +++ b/13_Bounce/rust/src/main.rs @@ -58,60 +58,58 @@ fn main() { //180 PRINT //182 PRINT "FEET" //184 PRINT - print!("\nFEET\n"); + print!("\nFEET\n\n"); - //186 S1=INT(70/(V/(16*S2))) - let s1 = (70.0 / (v / (16.0 * s2))).floor() as i32; // verified + //186 S1=INT(70/(V/(16*S2))) // verified + let s1 = (70.0 / (v/(16.0*s2))) as i32; //190 FOR I=1 TO S1 for i in 1..=s1 { //200 T(I)=V*C^(I-1)/16 - t.push(v * c.powf(i as f32 - 1.0) / 16.0); + t.push(v * c.powf(i as f32 - 1.0) / 16.0); // verified //210 NEXT I } let mut l = 0.0; //220 FOR H=INT(-16*(V/32)^2+V^2/32+.5) TO 0 STEP -.5 - let mut h = (-16.0 * (v / 32.0).powi(2) + (v.powi(2)) / 32.0 + 0.5).floor() as i32; // verified - while h >= 0 { + let mut h = (-16.0 * (v / 32.0).powi(2) + (v.powi(2)) / 32.0 + 0.5).floor(); + while h >= 0.0 { //221 IF INT(H)<>H THEN 225 - if h != h { - //225 L=0 - l = 0.0; - } - else { + if h.floor() == h { //222 PRINT H; - println!("{}", h); - //225 L=0 - l = 0.0; + print!("{}", h); } + //225 L=0 + l = 0.0; //230 FOR I=1 TO S1 for i in 1..=s1 { - let mut t2 = 0.0; + let mut T = 0.0; //240 FOR T=0 TO T(I) STEP S2 - while t2 <= t[(i - 1) as usize] { + while T <= t[(i - 1) as usize] { //245 L=L+S2 l = l + s2; //250 IF ABS(H-(.5*(-32)*T^2+V*C^(I-1)*T))>.25 THEN 270 - let condition = h - (0.5 * (-32.0) * t2.powf(2.0) + v * c.powf((i-1) as f32) * t2); - if condition >= 0.25{ + let condition = h - (0.5 * (-32.0) * T.powf(2.0) + v * c.powf((i-1) as f32) * T); + if condition.abs() >= 0.25{ + T = T + s2; continue; } //260 PRINT TAB(L/S2);"0"; - print!("{}0", " ".repeat((l/s2) as usize)); + print!("{}{}", " ".repeat((l / s2) as usize), T); //270 NEXT T - t2 = t2 + s2; + T = T + s2; } //275 T=T(I+1)/2 - t2 = t[i as usize] / 2.0; + if i as usize == t.len() { break; } + T = t[i as usize] / 2.0; //276 IF -16*T^2+V*C^(I-1)*T Date: Mon, 3 Mar 2025 02:11:30 -0300 Subject: [PATCH 4/6] bounce game initial rust implementation --- 13_Bounce/rust/src/main.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/13_Bounce/rust/src/main.rs b/13_Bounce/rust/src/main.rs index 32fc6ea7..d287b89e 100644 --- a/13_Bounce/rust/src/main.rs +++ b/13_Bounce/rust/src/main.rs @@ -71,6 +71,7 @@ fn main() { } let mut l = 0.0; + let mut l_expected = l; //220 FOR H=INT(-16*(V/32)^2+V^2/32+.5) TO 0 STEP -.5 let mut h = (-16.0 * (v / 32.0).powi(2) + (v.powi(2)) / 32.0 + 0.5).floor(); @@ -82,7 +83,7 @@ fn main() { } //225 L=0 l = 0.0; - + l_expected = l; //230 FOR I=1 TO S1 for i in 1..=s1 { let mut T = 0.0; @@ -90,16 +91,20 @@ fn main() { while T <= t[(i - 1) as usize] { //245 L=L+S2 l = l + s2; - + l_expected = l_expected + s2; + //250 IF ABS(H-(.5*(-32)*T^2+V*C^(I-1)*T))>.25 THEN 270 let condition = h - (0.5 * (-32.0) * T.powf(2.0) + v * c.powf((i-1) as f32) * T); if condition.abs() >= 0.25{ T = T + s2; continue; } + // TABS ARE NOT SPACES, BUT A TERMINAL POSITION //260 PRINT TAB(L/S2);"0"; - print!("{}{}", " ".repeat((l / s2) as usize), T); - + let spaces = ((l / s2).floor()-1.0) as usize; + print!("{}0", " ".repeat(spaces)); + l = l - spaces as f32; + //270 NEXT T T = T + s2; } @@ -128,7 +133,7 @@ fn main() { print!(" "); //320 FOR I=1 TO INT(L+1)/S2+1 - for _ in 1..=((l+1.0) / s2 + 1.0) as i32 { + for _ in 1..=((l_expected+1.0) / s2 + 1.0) as i32 { //330 PRINT "."; print!("."); //340 NEXT I @@ -139,7 +144,7 @@ fn main() { print!("\n 0"); //360 FOR I=1 TO INT(L+.9995) - for i in 1..=((l + 0.9995) as i32) { + for i in 1..=((l_expected + 0.9995) as i32) { //380 PRINT TAB(INT(I/S2));I; print!("{}{}", " ".repeat((i as f32 / s2) as usize), i); //390 NEXT I @@ -148,7 +153,7 @@ fn main() { //400 PRINT //410 PRINT TAB(INT(L+1)/(2*S2)-2);"SECONDS" //420 PRINT - let tabs = ((l+1.0) / (2.0 * s2) - 2.0) as usize; + let tabs = ((l_expected+1.0) / (2.0 * s2) - 2.0) as usize; println!("\n{}SECONDS\n", " ".repeat(tabs)); //430 GOTO 135 From 617bdc1e9f760560ebd5dcc5308425a7a59505ba Mon Sep 17 00:00:00 2001 From: marquesrs <80490672+marquesrs@users.noreply.github.com> Date: Mon, 3 Mar 2025 03:15:38 -0300 Subject: [PATCH 5/6] bounce game initial rust implementation --- 13_Bounce/rust/src/main.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/13_Bounce/rust/src/main.rs b/13_Bounce/rust/src/main.rs index d287b89e..f69b2d92 100644 --- a/13_Bounce/rust/src/main.rs +++ b/13_Bounce/rust/src/main.rs @@ -40,20 +40,23 @@ fn main() { ); loop { - //135 INPUT "TIME INCREMENT (SEC)";S2 - let s2 = input("TIME INCREMENT (SEC): ").parse::().unwrap(); + //135 INPUT "TIME INCREMENT (SEC)";S2 + //let s2 = input("TIME INCREMENT (SEC): ").parse::().unwrap(); + let s2 = 0.1f32; //140 PRINT println!(); //150 INPUT "VELOCITY (FPS)";V - let v = input("VELOCITY (FPS): ").parse::().unwrap(); + //let v = input("VELOCITY (FPS): ").parse::().unwrap(); + let v = 20.0f32; //160 PRINT println!(); //170 INPUT "COEFFICIENT";C - let c = input("COEFFICIENT: ").parse::().unwrap(); + //let c = input("COEFFICIENT: ").parse::().unwrap(); + let c = 0.5f32; //180 PRINT //182 PRINT "FEET" @@ -157,6 +160,7 @@ fn main() { println!("\n{}SECONDS\n", " ".repeat(tabs)); //430 GOTO 135 + break; } //440 END } \ No newline at end of file From 4f46b2f7eb484c18f447a711320fbfd5e25d3818 Mon Sep 17 00:00:00 2001 From: marquesrs <80490672+marquesrs@users.noreply.github.com> Date: Mon, 3 Mar 2025 03:49:00 -0300 Subject: [PATCH 6/6] bounce game initial rust implementation --- 13_Bounce/rust/src/main.rs | 77 +++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 30 deletions(-) diff --git a/13_Bounce/rust/src/main.rs b/13_Bounce/rust/src/main.rs index f69b2d92..99050227 100644 --- a/13_Bounce/rust/src/main.rs +++ b/13_Bounce/rust/src/main.rs @@ -1,3 +1,11 @@ +/** BOUNCE GAME + * https://github.com/coding-horror/basic-computer-games/blob/main/13_Bounce/bounce.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 +*/ + use std::io::Write; fn input(msg: &str) -> String { @@ -41,22 +49,22 @@ fn main() { loop { //135 INPUT "TIME INCREMENT (SEC)";S2 - //let s2 = input("TIME INCREMENT (SEC): ").parse::().unwrap(); - let s2 = 0.1f32; + let s2 = input("TIME INCREMENT (SEC): ").parse::().unwrap(); + //let s2 = 0.2f32; //140 PRINT println!(); //150 INPUT "VELOCITY (FPS)";V - //let v = input("VELOCITY (FPS): ").parse::().unwrap(); - let v = 20.0f32; + let v = input("VELOCITY (FPS): ").parse::().unwrap(); + //let v = 20.0f32; //160 PRINT println!(); //170 INPUT "COEFFICIENT";C - //let c = input("COEFFICIENT: ").parse::().unwrap(); - let c = 0.5f32; + let c = input("COEFFICIENT: ").parse::().unwrap(); + //let c = 0.6f32; //180 PRINT //182 PRINT "FEET" @@ -74,56 +82,57 @@ fn main() { } let mut l = 0.0; - let mut l_expected = l; //220 FOR H=INT(-16*(V/32)^2+V^2/32+.5) TO 0 STEP -.5 let mut h = (-16.0 * (v / 32.0).powi(2) + (v.powi(2)) / 32.0 + 0.5).floor(); while h >= 0.0 { + let mut line_content = String::new(); //221 IF INT(H)<>H THEN 225 if h.floor() == h { //222 PRINT H; - print!("{}", h); + line_content.push_str(h.to_string().as_str()); + line_content.push(' '); } //225 L=0 l = 0.0; - l_expected = l; //230 FOR I=1 TO S1 for i in 1..=s1 { - let mut T = 0.0; + let mut t_val = 0.0; //240 FOR T=0 TO T(I) STEP S2 - while T <= t[(i - 1) as usize] { + while t_val <= t[(i - 1) as usize] { //245 L=L+S2 l = l + s2; - l_expected = l_expected + s2; //250 IF ABS(H-(.5*(-32)*T^2+V*C^(I-1)*T))>.25 THEN 270 - let condition = h - (0.5 * (-32.0) * T.powf(2.0) + v * c.powf((i-1) as f32) * T); + let condition = h - (0.5 * (-32.0) * t_val.powf(2.0) + v * c.powf((i-1) as f32) * t_val); if condition.abs() >= 0.25{ - T = T + s2; + t_val = t_val + s2; continue; } // TABS ARE NOT SPACES, BUT A TERMINAL POSITION //260 PRINT TAB(L/S2);"0"; - let spaces = ((l / s2).floor()-1.0) as usize; - print!("{}0", " ".repeat(spaces)); - l = l - spaces as f32; + let spaces = ((l / s2) - 1.0) as usize; + while line_content.len() < spaces { + line_content.push(' '); + } + line_content.push('0'); //270 NEXT T - T = T + s2; + t_val = t_val + s2; } //275 T=T(I+1)/2 if i as usize == t.len() { break; } - T = t[i as usize] / 2.0; + t_val = t[i as usize] / 2.0; //276 IF -16*T^2+V*C^(I-1)*T