-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsnake.h
70 lines (59 loc) · 2.35 KB
/
snake.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Nama Program : snake.h
// Deskripsi : Deklarasi struktur dan fungsi untuk manajemen ular dalam permainan,
// bertujuan mendefinisikan struktur data dan antarmuka untuk mengontrol perilaku ular
// Pembuat : Ikhsan Satriadi (241511080)
// Rizky Satria Gunawan (241511089)
#ifndef SNAKE_H
#define SNAKE_H
#include <stdbool.h>
#include "vector.h"
// Definisi maksimum panjang ular sekaligus maksimum skor
#define MAX_SNAKE_LENGTH 256
/// Struktur untuk merepresentasikan objek ular dalam permainan
typedef struct
{
Vector2 head; // Posisi kepala ular
Vector2 segments[MAX_SNAKE_LENGTH]; // Array untuk menyimpan posisi segmen-segmen tubuh ular
int length; // Panjang ular (jumlah segmen)
Vector2 direction; // Arah gerakan ular
} Snake;
/**
* Fungsi untuk membuat ular baru
* @param start_x posisi awal x dari kepala ular
* @param start_y posisi awal y dari kepala ular
* @return objek ular baru bertipe Snake
*/
Snake create_snake(int start_x, int start_y);
/**
* Prosedur untuk menggerakkan ular
* @param snake parameter input/output passing by reference
* menunjuk ke objek ular yang akan diperbarui
*/
void snake_move(Snake *snake);
/**
* Fungsi untuk memeriksa apakah ular bertabrakan dengan dirinya sendiri
* @param snake parameter input passing by reference
* menunjuk ke objek ular yang akan diperiksa
* @return true jika ular bertabrakan dengan dirinya sendiri, false jika tidak
*/
bool snake_collides_with_self(Snake *snake);
/**
* Prosedur untuk menumbuhkan ular
* @param snake parameter output passing by reference, menunjuk ke objek ular yang akan diperbarui
*/
void snake_grow(Snake *snake);
/**
* Fungsi untuk mendapatkan simbol yang merepresentasikan kepala ular berdasarkan arah gerakan
* @param snake parameter input passing
* menunjuk ke objek ular yang akan diperiksa
* @return karakter yang merepresentasikan kepala ular ('>', '<', 'v', '^')
*/
char get_snake_head_symbol(Snake *snake);
/**
* Prosedur untuk mengubah arah gerakan ular
* @param snake parameter input/output passing by reference
* menunjuk ke objek ular yang akan diperbarui
* @param new_direction arah baru untuk ular, bertipe Vector2
*/
void snake_change_direction(Snake *snake, Vector2 new_direction);
#endif // SNAKE_H