From b1f7ef98ae26fec0452c2213995d020ad140410e Mon Sep 17 00:00:00 2001 From: DeaDDooMER Date: Tue, 4 Apr 2017 22:03:23 +0300 Subject: [PATCH] =?utf8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?utf8?q?=D0=BD=D0=BE=20=D0=BF=D0=B0=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?utf8?q?=D1=81=D0=BA=D0=BE=D1=80=D0=BE=D1=81=D1=82=D0=B8=20=D0=BF=D0=BE?= =?utf8?q?=D1=81=D0=BB=D0=B5=20=D1=80=D0=B0=D0=B7=D0=B3=D0=BE=D0=BD=D0=B0?= =?utf8?q?=20=D0=BE=D1=82=20=D0=B7=D0=B2=D0=B5=D0=B7=D0=B4=D1=8B,=20=D0=B8?= =?utf8?q?=D0=B7=D0=BC=D0=B5=D0=BD=D1=91=D0=BD=20=D0=B1=D0=B0=D0=BB=D0=B0?= =?utf8?q?=D0=BD=D1=81,=20=D0=B7=D0=B2=D0=B5=D0=B7=D0=B4=D0=B0=20=D0=B2?= =?utf8?q?=D1=8B=D0=B3=D0=BB=D1=8F=D0=B4=D0=B8=D1=82=20=D1=82=D0=B5=D0=BF?= =?utf8?q?=D0=B5=D1=80=D1=8C=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5=20=D1=8D?= =?utf8?q?=D1=84=D1=84=D0=B5=D0=BA=D1=82=D0=BD=D0=BE.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- game.c | 25 +++++++++++-------------- game.h | 8 ++++---- netwar.c | 9 +++++++-- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/game.c b/game.c index 3acaa36..0c63246 100644 --- a/game.c +++ b/game.c @@ -6,7 +6,7 @@ #include "game.h" -#define SPEED (0.03 / TICK) +#define SPEED (0.015 / TICK) #define ROTATE (0.03 / TICK) #define BULL_SPEED (0.4 / TICK) @@ -14,8 +14,8 @@ #define MAX_ROTATE (0.3 / TICK) // Цифры взяты с потолка, но вроде неплохо подобраны -#define G 3.673e-4 -#define M_STAR 10.0 +#define G 6.673e-4 +#define M_STAR 8.0 #define M_SHIP 0.1 Player g_player[MAX_PLAYERS]; @@ -59,13 +59,10 @@ static int freebullet() { } static void moveplayer(int id, float speed) { - g_player[id].vx += speed * cos(g_player[id].r * 2 * M_PI); - g_player[id].vy += speed * sin(g_player[id].r * 2 * M_PI); - - if(fabs(g_player[id].vx) > MAX_SPEED) - g_player[id].vx = copysignf(MAX_SPEED, g_player[id].vx); - if(fabs(g_player[id].vy) > MAX_SPEED) - g_player[id].vy = copysignf(MAX_SPEED, g_player[id].vy); + if(fabs(g_player[id].vx) < MAX_SPEED) + g_player[id].vx += speed * cos(g_player[id].r * 2 * M_PI); + if(fabs(g_player[id].vy) < MAX_SPEED) + g_player[id].vy += speed * sin(g_player[id].r * 2 * M_PI); } static void roteplayer(int id, float speed) { @@ -93,10 +90,8 @@ static void fireplayer(int id) { static void checkspacebound(float * a) { float x = *a; - if(x < -1) - x = fabs(x); - else if(x > 1) - x = -x; + if(x < -1 || x > 1) + x = copysign(fmodf(x, 1) + 1, -1 * x); *a = x; } @@ -160,6 +155,8 @@ void g_update() { checkspacebound(&g_bullet[i].x); checkspacebound(&g_bullet[i].y); + //gravity(&g_bullet[i].vx, &g_bullet[i].vy, g_bullet[i].x, g_bullet[i].y); + for(int j = 0; j < MAX_PLAYERS; j++) if(g_player[j].live) if(collide(g_bullet[i].x, g_bullet[i].y, 0.0001, g_player[j].x, g_player[j].y, PLAYER_SIZE)) diff --git a/game.h b/game.h index e41bb05..35536b6 100644 --- a/game.h +++ b/game.h @@ -2,15 +2,15 @@ #include "protocol.h" -#define MAX_PLAYERS 32 -#define MAX_BULLETS (MAX_PLAYERS * 8) +#define MAX_PLAYERS 8 +#define MAX_BULLETS (MAX_PLAYERS * 5) #define TICK 24 // Количество обновлений мира в секунду #define TICK_DELAY (1000 / TICK) // Задержка между тиками #define BULLET_TIME (TICK * 6) // Время жизни игрока #define PLAYER_SHOOT ((int)(TICK * 0.8)) // Задержка между выстрелами -#define PLAYER_SIZE 0.01785 // Радиус игрока -#define STAR_SIZE 0.1 // Радиус звезды +#define PLAYER_SIZE 0.03 // Радиус игрока +#define STAR_SIZE 0.15 // Радиус звезды typedef struct Player { /* public */ diff --git a/netwar.c b/netwar.c index 44e8725..b7c2222 100644 --- a/netwar.c +++ b/netwar.c @@ -88,7 +88,7 @@ static void closewindow() { } static void paintmodel(const float * model, int modelsz, float mx, float my, float r, float size, int cx, int cy) { - int scale = (WIDTH + HEIGHT) / 2 * size; + int scale = (WIDTH + HEIGHT) / 2 * size / 2; int count = modelsz / sizeof(model[0]) / 2; int x = mx * WIDTH / 2; @@ -115,7 +115,12 @@ static void paintwindow() { int cy = HEIGHT / 2; SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0xFF, 0x00); - paintmodel(star, sizeof(star), 0, 0, 0, STAR_SIZE, cx, cy); + + static float start_r; + for(int i = 0; i < STAR_SIZE * 200; i++) + paintmodel(star, sizeof(star), 0, 0, M_PI / i + start_r, STAR_SIZE, cx, cy); + + start_r += 0.0001; for(int i = 0; i < MAX_PLAYERS; i++) { if(i == cl_playerid) -- 2.29.2