Commit 8d922152 authored by Max Kobelt's avatar Max Kobelt
Browse files

Move aliens

parent 9966591d
#include "alien.h"
#include <stdlib.h>
#include <stdbool.h>
#define ALIEN_SIZE 8
#define ALIEN_OFFSET 2
extern const int GAME_SCREEN_WIDTH;
extern const int GAME_SCREEN_WIDTH, LASER_CANON_SPEED;
Aliens spawnAliens() {
Aliens aliens = malloc(sizeof *aliens * ALIEN_ROWS);
for (int i = 0; i < ALIEN_ROWS; ++i) {
aliens[i] = malloc(sizeof **aliens * ALIEN_COLS);
for (int j = 0; j < ALIEN_COLS; ++j) {
aliens[i][j] = malloc(sizeof ***aliens);
Aliens* spawnAliens() {
Aliens* aliens = malloc(sizeof *aliens);
aliens->pos = (Vector2) { 0, 0 };
aliens->movingRight = true;
aliens->velocity = LASER_CANON_SPEED;
Alien *alien = aliens[i][j];
alien->x = j * (ALIEN_SIZE + ALIEN_OFFSET);
alien->y = i * (ALIEN_SIZE + ALIEN_OFFSET);
bool **instances = malloc(sizeof *instances);
for (int j = 0; j < ALIEN_COLS; ++j) {
instances[j] = malloc(sizeof **instances * ALIEN_ROWS);
for (int i = 0; i < ALIEN_ROWS; ++i) {
instances[j][i] = true;
}
}
aliens->instances = instances;
return aliens;
}
void drawAliens(Aliens aliens) {
for (int i = 0; i < ALIEN_ROWS; ++i) {
for (int j = 0; j < ALIEN_COLS; ++j) {
Alien *alien = aliens[i][j];
if (alien) {
DrawRectangle(alien->x, alien->y, ALIEN_SIZE, ALIEN_SIZE, WHITE);
void drawAliens(Aliens* aliens) {
for (int j = 0; j < ALIEN_COLS; ++j) {
for (int i = 0; i < ALIEN_ROWS; ++i) {
if (aliens->instances[j][i]) {
DrawRectangle(aliens->pos.x + j * (ALIEN_SIZE + ALIEN_OFFSET), aliens->pos.y + i * (ALIEN_SIZE + ALIEN_OFFSET), ALIEN_SIZE, ALIEN_SIZE, WHITE);
}
}
}
}
void aliensTick(Aliens* aliens) {
int outerCol = aliens->movingRight ? ALIEN_COLS - 1 : 0;
while (!aliens->instances[outerCol + (aliens->movingRight ? -1 : 1)]) {
aliens->movingRight ? --outerCol : ++outerCol;
}
if (aliens->pos.x < 0 || aliens->pos.x + outerCol * (ALIEN_SIZE + ALIEN_OFFSET) + ALIEN_SIZE >= GAME_SCREEN_WIDTH) {
aliens->movingRight = !aliens->movingRight;
}
aliens->pos.x += LASER_CANON_SPEED * (aliens->movingRight ? 1 : -1);
}
......@@ -2,11 +2,21 @@
#include "raylib.h"
#include <stdbool.h>
#include <stddef.h>
#define ALIEN_ROWS 3
#define ALIEN_COLS 5
typedef Vector2 Alien;
typedef Alien*** Aliens;
Aliens spawnAliens();
void drawAliens();
typedef struct {
bool** instances;
Vector2 pos;
bool movingRight;
size_t velocity;
} Aliens;
Aliens* spawnAliens();
void aliensTick(Aliens *aliens);
void drawAliens(Aliens *aliens);
......@@ -8,12 +8,11 @@
#include <stdlib.h>
#include <stdbool.h>
#define LASER_CANON_SPEED 2
extern const int GAME_SCREEN_WIDTH, GAME_SCREEN_HEIGHT, FRAME_RATE;
const int LASER_CANON_SPEED = 2;
Projectile *playerProj;
Aliens aliens;
Aliens* aliens;
Rectangle laserCanon;
Rectangle gameBorder;
Vector2 laserCanonPos;
......@@ -46,6 +45,8 @@ void calcGame() {
laserCanon.x = laserCanonPos.x;
laserCanon.y = laserCanonPos.y;
aliensTick(aliens);
}
void drawGame() {
......
......@@ -13,7 +13,7 @@ int main() {
InitWindow(GetScreenWidth(), GetScreenHeight(), "Space Intruders");
#ifdef NDEBUG
ToggleFullscreen();
#endif // SI_DEBUG
#endif
HideCursor();
SetTargetFPS(FRAME_RATE);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment