Snake: Difference between revisions

22 bytes added ,  11 months ago
m
→‎{{header|Rust}}: Edge case handled
m (→‎{{header|Rust}}: Edge case handled)
Line 4,612:
 
use derive_new::new;
use rand::{thread_rng, Rng};
use std::{cell::RefCell, rc::Rc};
use winsafe::{co, gui, prelude::*, COLORREF, HBRUSH, HPEN, RECT, SIZE};
Line 4,701:
ctx.r[food] = *(grid.iter())
.filter(|i| **i != new_h && snake_cells.binary_search(i).is_err())
.nth(rand::thread_rng().gen_range(0..(grid.len() - 1 - snake_cells.len()).max(1)))
.unwrapunwrap_or(&0);
} else if grid.binary_search(&new_h).is_err() || snake_cells.contains(&&new_h) {
ctx.wnd.hwnd().KillTimer(1)?; // Stop
106

edits