Add game 2048
This commit is contained in:
@@ -4,5 +4,6 @@ version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
compile-rand = "1.0.0"
|
||||
fpga-lib = { path = "../fpga-lib" }
|
||||
rand = {version = "0.9.2", default-features = false, features = ["small_rng"]}
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
#![feature(generic_const_exprs)]
|
||||
|
||||
use core::{
|
||||
iter::Cloned,
|
||||
mem::MaybeUninit,
|
||||
ops::{Index, IndexMut},
|
||||
};
|
||||
@@ -100,7 +99,7 @@ where
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
grid: [0; SIZE * SIZE],
|
||||
rng: rand::rngs::SmallRng::seed_from_u64(9543223934),
|
||||
rng: rand::rngs::SmallRng::seed_from_u64(compile_rand::compile_rand!(u64)),
|
||||
score: 0,
|
||||
}
|
||||
}
|
||||
@@ -208,13 +207,11 @@ where
|
||||
pub fn run(&mut self) -> ! {
|
||||
let mut buttons = [false; 4];
|
||||
let funcs = [Self::left, Self::right, Self::up, Self::down];
|
||||
loop {
|
||||
let mut lost = false;
|
||||
self.draw();
|
||||
loop {
|
||||
for direction in 0..4 {
|
||||
let button =
|
||||
unsafe { fpga_lib::interface::Buttons::get_button(direction as u8) };
|
||||
let button = unsafe { fpga_lib::interface::Buttons::get_button(direction as u8) };
|
||||
if button && !buttons[direction] {
|
||||
buttons[direction] = true;
|
||||
|
||||
@@ -239,12 +236,7 @@ where
|
||||
RED,
|
||||
)
|
||||
};
|
||||
self.reset();
|
||||
while !(0..4).any(|direction| unsafe {
|
||||
fpga_lib::interface::Buttons::get_button(direction as u8)
|
||||
}) {}
|
||||
break;
|
||||
}
|
||||
loop {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ set_property -dict { PACKAGE_PIN T16 IOSTANDARD LVCMOS33 } [get_ports { io_swi
|
||||
set_property -dict { PACKAGE_PIN R18 IOSTANDARD LVCMOS33 } [get_ports { io_push[0] }]; #IO_L20N_T3_34 Sch=BTN0
|
||||
set_property -dict { PACKAGE_PIN P16 IOSTANDARD LVCMOS33 } [get_ports { io_push[1] }]; #IO_L24N_T3_34 Sch=BTN1
|
||||
set_property -dict { PACKAGE_PIN V16 IOSTANDARD LVCMOS33 } [get_ports { io_push[2] }]; #IO_L18P_T2_34 Sch=BTN2
|
||||
set_property -dict { PACKAGE_PIN Y16 IOSTANDARD LVCMOS33 } [get_ports { io_push[3] }]; #IO_L7P_T1_34 Sch=BTN3
|
||||
set_property -dict { PACKAGE_PIN Y16 IOSTANDARD LVCMOS33 } [get_ports { reset }]; #IO_L7P_T1_34 Sch=BTN3
|
||||
|
||||
|
||||
# LEDs
|
||||
|
||||
@@ -10,7 +10,7 @@ class LedIp extends Module {
|
||||
val x31 = Input(UInt(64.W))
|
||||
val switch = Input(UInt(4.W))
|
||||
val led = Output(UInt(4.W))
|
||||
val button = Input(UInt(4.W))
|
||||
val button = Input(UInt(3.W))
|
||||
val bus = new BusInterface
|
||||
})
|
||||
|
||||
@@ -27,7 +27,7 @@ class LedIp extends Module {
|
||||
when(io.bus.be.asUInt.orR) { // Écriture dans le registre des leds internes
|
||||
dinReg := io.bus.wdata
|
||||
}.otherwise { // Lecture des boutons poussoirs, pas de débounce car lus par le soft
|
||||
btnReg := Fill(28, 0.U) ## io.button
|
||||
btnReg := Fill(25, 0.U) ## io.switch ## io.button
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ class ZzTop(file: String = "", sim: Boolean = true) extends Module {
|
||||
// Interface debug minimale
|
||||
val switch = Input(UInt(4.W))
|
||||
val led = Output(UInt(4.W))
|
||||
val push = Input(UInt(4.W))
|
||||
val push = Input(UInt(3.W))
|
||||
// Debug simu pour ne pas s'embeter avec le switch dans le testbench
|
||||
val x31 = if (sim) Some(Output(UInt(64.W))) else None
|
||||
val valid_x31 = if (sim) Some(Output(Bool())) else None
|
||||
|
||||
Reference in New Issue
Block a user