Small 2048 game in Rust
Commit 72d88c7f9762
tarball1 file changed+21-16
@@ -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];