jag

2048_rust

public

Small 2048 game in Rust

Star0
Watch0

Commit 72d88c7f9762

tarball

Jaglekon <jaglekon@noreply.codeberg.org>2026-09-14 17:00 UTC

1 file changed+21-16
Merge pull request 'Improvements on codequality' (#1) from BaumSplitter41/jag_2048:code_quality into main

Reviewed-on: https://codeberg.org/Jaglekon/jag_2048/pulls/1
Modified file: src/main.rs+21 additions−16 deletions
@@ -14,26 +14,30 @@ enum Direction {
1414 }
1515
1616 fn print_field(field: [[u16; 4]; 4]) {
17- print!("┏━━━━┯━━━━┯━━━━┯━━━━┓\n");
17+ println!("┏━━━━┯━━━━┯━━━━┯━━━━┓");
1818
19- for i in 0..4 {
19+ for i in 0..field.len() {
2020 print!("┃");
2121
22- for j in 0..4 {
22+ for j in 0..field.len() {
2323 match field[i][j] {
2424 0 => print!(" "),
2525 n => print!("{:4}", n),
2626 };
2727
28- print!("{}", if j == 3 { "┃\n" } else { "│" });
28+ match j {
29+ 3 => println!("┃"),
30+ _ => print!("│")
31+ };
32+
2933 }
3034
3135 if i != 3 {
32- print!("┠────┼────┼────┼────┨\n");
36+ println!("┠────┼────┼────┼────┨");
3337 }
3438 }
3539
36- print!("┗━━━━┷━━━━┷━━━━┷━━━━┛\n");
40+ println!("┗━━━━┷━━━━┷━━━━┷━━━━┛");
3741
3842 io::stdout().flush().unwrap();
3943 }
@@ -43,11 +47,11 @@ fn move_field(direction: Direction, field: [[u16; 4]; 4]) -> [[u16; 4]; 4] {
4347 return field;
4448 }
4549
46- let mut new_field = field.clone();
50+ let mut new_field = field;
4751
48- for i in 0..4 {
52+ for i in 0..field.len() {
4953 let mut lock = false;
50- for j in 1..4 {
54+ for j in 1..field.len() {
5155 for k in (1..=j).rev() {
5256 let this = match direction {
5357 Direction::Up => (k, i),
@@ -69,7 +73,7 @@ fn move_field(direction: Direction, field: [[u16; 4]; 4]) -> [[u16; 4]; 4] {
6973 }
7074
7175 if new_field[this.0][this.1] == new_field[next.0][next.1] {
72- if lock == true {
76+ if lock {
7377 lock = false;
7478 break;
7579 }
@@ -103,8 +107,8 @@ fn make_rand_num(field: &mut [[u16; 4]; 4]) {
103107 }
104108
105109 fn field_has_empty(field: [[u16; 4]; 4]) -> bool {
106- for i in 0..4 {
107- for j in 0..4 {
110+ for i in 0..field.len() {
111+ for j in 0..field.len() {
108112 if field[i][j] == 0 {
109113 return true;
110114 }
@@ -118,8 +122,8 @@ fn has_lost(field: [[u16; 4]; 4]) -> bool {
118122 return false;
119123 }
120124
121- for i in 0..4 {
122- for j in 0..4 {
125+ for i in 0..field.len() {
126+ for j in 0..field.len() {
123127 if i > 0 && field[i][j] == field[i - 1][j] {
124128 return false;
125129 }
@@ -156,8 +160,9 @@ fn main() {
156160
157161 let mut field: [[u16; 4]; 4] = [[0; 4]; 4];
158162
159- make_rand_num(&mut field);
160- make_rand_num(&mut field);
163+ for _ in 0..2 {
164+ make_rand_num(&mut field);
165+ };
161166
162167 let mut stdin = stdin();
163168 let mut buf = [0u8; 10];