mirror of
https://github.com/ProgramSnail/snake_2024.git
synced 2025-12-06 22:48:43 +00:00
modernization, better food rendering, consistent player moving, snake intersections
This commit is contained in:
parent
adabb50a9e
commit
b4509733da
8 changed files with 119 additions and 39 deletions
|
|
@ -1,6 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <deque>
|
||||
#include <iostream>
|
||||
|
||||
#include "Canvas.hpp"
|
||||
#include "Utils.hpp"
|
||||
|
|
@ -50,8 +51,12 @@ public:
|
|||
for (const auto &food : food_) {
|
||||
Veci food_pos = food.pos - offset;
|
||||
if (utils::is_valid_pos(food_pos) and not food.eaten) {
|
||||
paint::circle(
|
||||
{{.pos = food_pos, .color = config_.food_color}, food.weight * 3});
|
||||
paint::circle({{
|
||||
.pos = food_pos,
|
||||
.color = color::scale(config_.food_color,
|
||||
1.0 - food_lasted(food)),
|
||||
},
|
||||
food.weight * 2});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -59,21 +64,31 @@ public:
|
|||
private:
|
||||
void generate() {
|
||||
++current_gen_;
|
||||
while (food_.front().gen + config_.food_exists_gens < current_gen_) {
|
||||
while (food_.front().gen + config_.food_exists_gens <= current_gen_) {
|
||||
food_.pop_front();
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < config_.gen_food_count; ++i) {
|
||||
food_.push_back({
|
||||
.gen = current_gen_,
|
||||
.pos = {.x = rand() % config_.size.x, .y = rand() % config_.size.y},
|
||||
.pos =
|
||||
{
|
||||
.x = std::rand() % config_.size.x,
|
||||
.y = std::rand() % config_.size.y,
|
||||
},
|
||||
.weight = config_.min_food_weight +
|
||||
rand() % std::abs(config_.max_food_weight -
|
||||
config_.min_food_weight),
|
||||
std::rand() % std::abs(config_.max_food_weight -
|
||||
config_.min_food_weight),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
double food_lasted(const Food &food) {
|
||||
return ((current_gen_ - food.gen) * config_.gen_interval +
|
||||
time_from_last_gen_) /
|
||||
(config_.food_exists_gens * config_.gen_interval);
|
||||
}
|
||||
|
||||
private:
|
||||
Config config_;
|
||||
double time_from_last_gen_ = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue