Дополнен 5 месяцев назад
Вывод:
1) 39; 3
2) 0; 3,000...
Дополнен 5 месяцев назад
Измененный сценарий:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
typedef struct {
float x, y;
int width, height, ix, iy;
} Object;
char map[25][81];
Object player;
void init_map()
{
for (int i = 0; i < 25; i++)
{
strncpy(map[i], " \0", 81);
}
}
void render_map()
{
setcur(0, 0);
for (int i = 0; i < 25; i++)
{
printf("%s", map[i]);
}
}
void init_object(Object *obj, float xpos, float ypos, float width, float height)
{
printf("%g %g\n", xpos, ypos);
set_object_pos(obj, xpos, ypos);
(*obj).width = width;
(*obj).height = height;
(*obj).ix = (int)round( (*obj).x );
(*obj).iy = (int)round( (*obj).y );
for (int i = 0; i < (*obj).height; i++)
{
for (int j = 0; j < (*obj).width; j++)
{
map[ (*obj).iy + i ][ (*obj).ix + j ] = '@';
}
}
}
void set_object_pos(Object *obj, float xpos, float ypos)
{
printf("%g %g", xpos, ypos);
(*obj).x = xpos;
(*obj).y = ypos;
}
void setcur(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
int main()
{
init_map();
init_object(&player, 39, 3, 3, 3);
render_map();
return 0;
}
Сам сценарий: