I'm trying to make minesweeper using rust and bevy, but it feels that my code is bloated (a lot of for loops, segments that seem to be repeating themselves, etc.)
When I look at other people's code, they are using functions that I don't really understand (map, zip, etc.) that seem to make their code faster and cleaner.
I know that I should look up the functions that I don't understand, but I was wondering where you would learn stuff like that in the first place. I want to learn how to find functions that would be useful for optimizing my code.
I don't know if it's the best place to ask this, but I've been having issues with trying to make minesweeper with bevy.
I tried making a function that would give the number of mines around the tile that was clicked if it wasn't a mine. Then, I wanted to make it so that when the number of mines around the clicked tiles is 0, it reveals the surrounding tiles. Finally, I tried making the function recursive by rerunning it on the empty surrounding tiles.
The issue is that it seems that certain tiles with no mines surrounding them don't reveal the surrounding tiles.
Here's the portion of the code I am talking about (I know it's pretty bad):
fn find_surrounding_mines(
mut set: ParamSet<(
EventReader<TileEntity>,
EventWriter<TileEntity>,
)>,
mut surrounding_mines: EventWriter<SurroundingMines>,
mut query_board: Query<&mut Board>,
mut change_tile_image: EventWriter<ChangeTileImage>,
mut query_mine: Query<(&Mine, &mut Tile)>) {
let dy: [i8; 8] = [-1, -1, -1, 0, 0, 1, 1, 1];
let dx: [i8; 8] = [-1, 0, 1, -1, 1, -1, 0, 1];
let board = query_board.single_mut();
let mut num_mine: u8 = 0;
let mut y: u8 = 0;
let mut copy_x: usize = 0;
let mut tile_read:bool = false;
let mut copy_num_mine:u8 = 0;
for tile in set.p0().read(){
for (row_index, vector) in board.tiles.iter().enumerate(){
if let Some(x) = vector.iter().position(|&x|x == tile.0) {
copy_x = x;
y = row_index as u8;
for i in 0..8{
if x as i8 + dx[i] >= 0 && x as i8 + dx[i] < board.width as i8 && y as i8 + dy[i] >= 0 && y as i8 +dy[i] < board.height as i8{
if let Ok((_mine,mut tile)) = query_mine.get_mut(board.tiles[(y as i8 + dy[i]) as usize][(x as i8+ dx[i]) as usize]){
num_mine += 1;
tile.hidden = false;
}
}
}
break;
}
}
surrounding_mines.send(SurroundingMines(num_mine));
change_tile_image.send(ChangeTileImage{tile: tile.0, asset: "Minesweeper_LAZARUS_21x21_".to_string() + &num_mine.to_string() + ".png"});
copy_num_mine = num_mine;
num_mine = 0;
tile_read = true;
}
if copy_num_mine == 0 && tile_read{
tile_read = false;
for i in 0..8{
if copy_x as i8 + dx[i] >= 0 && copy_x as i8 + dx[i] < board.width as i8 && y as i8 + dy[i] >= 0 && y as i8 +dy[i] < board.height as i8{
if let Ok((_mine, mut tile)) = query_mine.get(board.tiles[(y as i8 + dy[i]) as usize][(copy_x as i8 + dx[i]) as usize]){
continue;
}else{
println!("{:?}", (y as i8 + dy[i], copy_x as i8 + dx[i]));
set.p1().send(TileEntity(board.tiles[(y as i8 + dy[i]) as usize][(copy_x as i8 + dx[i]) as usize]));
}
}
}
}
}
J'ai tellement hâte de programmer dans un contexte académique! Mais j'ai aussi une question.
Est-ce que les classes à l'Université ont le même taux de difficulté que ceux au cégep?
Aussi, ce serait cool d'avoir des étudiants de polymtl ici ☺️
For context, I heard the term "Web 3.0" be used for the first time for everything being put on the blockchain. Then, it reminded me of a post on Mastodon saying that the fediverse is Web 3.0. After that I looked it up on the internet, and the definition included A.I. with crypto.
So I'm wondering, what is actually Web 3.0? What does it mean to you? Or maybe is Web 3.0 just another attempt at making investors pay up?
Basically when my mouse goes top right, it disappears, as if there was no border. My windows are sized correctly and I have the right screen resolution. My drawing tablet is also acting as if my screen was larger than it is.
This question is rather specific, so I know it's not going to get many answers, but any answer is appreciated.
I'm thinking about living alone, but I'm worried about getting certain issues. I've already talked about it to my doctor, but I also wanted to get answers from people who have went through it.
Had a nightmare so bad and so vivid it took me an hour to recover.
I guess next time I'll listen to something happier or something idk.
I was creating a new key for pass when I noticed a random expired GPG key assigned to a certain "Roderick van Domburg" in my list of keys. I don't know any Rodericks, and this laptop has been whipped clean.
Should I be concerned? How could this even happen???
I started taking fluoxetine yesterday, and now I feel awful. I was wondering if anyone had tips in order to reduce stomach aches, or any tips in general in order to get through the beginning.
I would also like to hide the fact that I'm taking some for personal reasons. Any tips for that aswell?
Thanks in advance!
@Binette
@lemmy.ml