У меня есть тут два файла вот они:
тени:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<vector<int>> shadows(vector<vector<vector<int>>> seed)
{
vector<vector<int>> shadows;
vector<int> coords;
int index = 0;
//1
for(int x = 0; x < seed.size(); x++) {
for(int y = 0; y < seed[x].size(); y++){
//for(int z = 0; z < seed[x].size(); z++) {
if (y - 1>= 0) {
index = y - 1;
}
if(seed[x][y][1] - 60 == seed[x][index][1]) {
coords = {seed[x][y][1] - 60, seed[x][y][0], 1, 0};
shadows.push_back(coords);
//z = seed[x].size();
}
//}
}
}
return shadows;
мир:
#include <iostream>
#include <limits>
#include <string>
#include <vector>
#include <iomanip>
using namespace std;
int random(int min, int max)
{
static const double fraction = 1.0 / (static_cast<double>(RAND_MAX) + 1.0);
// Равномерно распределяем рандомное число в нашем диапазоне
return static_cast<int>(rand() * fraction * (max - min + 1) + min);
}
vector<vector<vector<int>>> world()
{
int chose;
int height = 7;
srand(static_cast<unsigned int>(time(0)));
vector<vector<vector<int>>> seed;
vector<vector<int>> yLine;
vector<int> coords;
for (int x = 0; x < 40; x++)
{
chose = random(1, 3);
if (chose == 1) {
height -= 1;
}
if (chose == 3) {
height += 1;
}
for (int y = 0; y < height; y++)
{
coords = {x * 60, y * 60};
yLine.push_back(coords);
}
seed.push_back(yLine);
}
return seed;
один создает мир а другой ресует тени (прозрачные квадраты черного цвета) размер блока 60 пикселей и работать оно должно было так под каждым блоком есть тень но если под блоком нет блока то тени там тоже нет но результат почемуто вот такой
там весь мир повернут в право на 90 градусов.
Можно увидеть что тени лежат градиентом с права(с низу) и еще очень большим количеством друг на другу (по этому черное все а так квадраты прозрачный черный цвет). Там еще есть файл который все рисует и собирает вместе (на SFML). Если будет надо я его тоже скину.