Hexagonal Grid
unknown
rust
9 months ago
969 B
16
Indexable
struct HexagonalGrid<T>(Vec<Vec<T>>);
impl<T> HexagonalGrid<T> {
fn left(&self, x: usize, y: usize) -> &T {
&self.0[x - 1][y]
}
fn right(&self, x: usize, y: usize) -> &T {
&self.0[x + 1][y]
}
fn top_left(&self, x: usize, y: usize) -> &T {
if x % 2 == 0 {
&self.0[x - 1][y - 1]
} else {
&self.0[x][y - 1]
}
}
fn top_right(&self, x: usize, y: usize) -> &T {
if x % 2 == 0 {
&self.0[x][y - 1]
} else {
&self.0[x + 1][y - 1]
}
}
fn bottom_left(&self, x: usize, y: usize) -> &T {
if x % 2 == 0 {
&self.0[x - 1][y + 1]
} else {
&self.0[x][y + 1]
}
}
fn bottom_right(&self, x: usize, y: usize) -> &T {
if x % 2 == 0 {
&self.0[x][y + 1]
} else {
&self.0[x + 1][y + 1]
}
}
}Editor is loading...
Leave a Comment