Halo Sobat Sederhana! Di artikel ini, saya akan membahas cara membuat game tembak sederhana dengan menggunakan Codeblock. Game ini cocok untuk para pemula yang ingin belajar membuat game sederhana. Tanpa berlama-lama lagi, mari kita mulai!
Perkenalan
Sebelum kita mulai membuat game, ada beberapa hal yang perlu dipersiapkan terlebih dahulu. Yang pertama adalah Codeblock. Codeblock adalah integrated development environment (IDE) yang dapat digunakan untuk membuat berbagai jenis aplikasi, termasuk game.
Yang kedua adalah bahasa pemrograman yang akan digunakan, yaitu C++. Jika Anda belum memiliki pengalaman dengan C++, tidak perlu khawatir karena game yang akan kita buat cukup sederhana dan mudah dipahami.
1. Instalasi Codeblock
Langkah pertama adalah mengunduh dan menginstal Codeblock. Anda dapat mengunduhnya dari situs resminya di www.codeblocks.org. Setelah diunduh, cukup ikuti instruksi instalasi yang muncul.
Setelah berhasil diinstal, buka Codeblock dan Anda akan melihat tampilan seperti gambar di bawah ini:
2. Membuat Proyek Baru
Selanjutnya, kita akan membuat proyek baru. Klik File – New – Project. Pilih Console Application dan klik Go.
Pada jendela berikutnya, pilih bahasa C++ dan Console Application. Beri nama proyek Anda dan tentukan lokasi penyimpanan. Setelah itu, klik Next dan Finish.
3. Menggunakan Library SDL
Selanjutnya, kita akan menggunakan library SDL (Simple DirectMedia Layer) untuk membuat game. SDL adalah library yang sangat populer di kalangan pengembang game karena mudah digunakan dan mendukung berbagai platform.
Unduh SDL dari situs resminya di www.libsdl.org. Setelah diunduh, ekstrak file zip tersebut lalu kopikan folder SDL ke dalam folder proyek Anda.
Setelah itu, buka Codeblock dan klik Project – Build Options – Linker Settings. Pada bagian Other Linker Options, tambahkan kode berikut:
-lmingw32 -lSDL2main -lSDL2
Klik OK untuk menyimpan pengaturan tersebut.
Langkah-langkah Pembuatan Game
1. Membuat Window
Langkah pertama dalam membuat game adalah membuat window. Window adalah area tempat game dijalankan. Kita akan membuat window dengan ukuran 800×600 piksel.
Buatlah file main.cpp dan masukkan kode berikut:
#include <SDL2/SDL.h>int main(int argc, char *argv[]) {// Inisialisasi SDLSDL_Init(SDL_INIT_EVERYTHING);// Buat windowSDL_Window* window = SDL_CreateWindow("Game Tembak", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_SHOWN);// Loop utamabool quit = false;while (!quit) {// Event handlingSDL_Event event;while (SDL_PollEvent(&event)) {switch (event.type) {case SDL_QUIT:quit = true;break;}}}// Destroy windowSDL_DestroyWindow(window);// Quit SDLSDL_Quit();return 0;}
Kode di atas menginisialisasi SDL, membuat window dengan judul “Game Tembak”, dan memulai loop utama. Loop utama adalah tempat di mana kita akan menampilkan game.
2. Membuat Latar Belakang
Selanjutnya, kita akan membuat latar belakang untuk game. Buatlah file background.cpp dan masukkan kode berikut:
#include <SDL2/SDL.h>class Background {public:Background(SDL_Renderer* renderer) {m_renderer = renderer;m_texture = SDL_CreateTextureFromSurface(m_renderer, SDL_LoadBMP("background.bmp"));m_rect.x = 0;m_rect.y = 0;m_rect.w = 800;m_rect.h = 600;}~Background() {SDL_DestroyTexture(m_texture);}void draw() {SDL_RenderCopy(m_renderer, m_texture, NULL, &m_rect);}private:SDL_Renderer* m_renderer;SDL_Texture* m_texture;SDL_Rect m_rect;};int main(int argc, char *argv[]) {// Inisialisasi SDLSDL_Init(SDL_INIT_EVERYTHING);// Buat windowSDL_Window* window = SDL_CreateWindow("Game Tembak", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_SHOWN);// Buat rendererSDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);// Buat backgroundBackground background(renderer);// Loop utamabool quit = false;while (!quit) {// Event handlingSDL_Event event;while (SDL_PollEvent(&event)) {switch (event.type) {case SDL_QUIT:quit = true;break;}}// Gambar backgroundbackground.draw();// RenderSDL_RenderPresent(renderer);}// Destroy renderer dan windowSDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);// Quit SDLSDL_Quit();return 0;}
Kode di atas menambahkan kelas Background yang menggambar latar belakang pada window. Latar belakangnya berupa gambar BMP dengan ukuran yang sama dengan window.
Anda perlu membuat gambar background.bmp dan menaruhnya di folder proyek.
3. Membuat Karakter dan Menembak
Selanjutnya, kita akan membuat karakter dan fitur menembak. Buatlah file player.cpp dan masukkan kode berikut:
#include <SDL2/SDL.h>class Player {public:Player(SDL_Renderer* renderer) {m_renderer = renderer;m_texture = SDL_CreateTextureFromSurface(m_renderer, SDL_LoadBMP("player.bmp"));m_rect.w = 40;m_rect.h = 40;m_rect.x = 400 - m_rect.w / 2;m_rect.y = 500 - m_rect.h / 2;}~Player() {SDL_DestroyTexture(m_texture);}void draw() {SDL_RenderCopy(m_renderer, m_texture, NULL, &m_rect);}void move(int x, int y) {m_rect.x += x;m_rect.y += y;if (m_rect.x < 0) {m_rect.x = 0;}if (m_rect.x + m_rect.w > 800) {m_rect.x = 800 - m_rect.w;}if (m_rect.y < 0) {m_rect.y = 0;}if (m_rect.y + m_rect.h > 600) {m_rect.y = 600 - m_rect.h;}}void shoot() {SDL_Rect bulletRect;bulletRect.w = 5;bulletRect.h = 15;bulletRect.x = m_rect.x + m_rect.w / 2 - bulletRect.w / 2;bulletRect.y = m_rect.y;SDL_SetRenderDrawColor(m_renderer, 255, 255, 255, 255);SDL_RenderFillRect(m_renderer, &bulletRect);m_bullets.push_back(bulletRect);}void moveBullets() {for (int i = 0; i < m_bullets.size(); i++) {m_bullets[i].y -= 10;if (m_bullets[i].y < -m_bullets[i].h) {m_bullets.erase(m_bullets.begin() + i);}}}void drawBullets() {SDL_SetRenderDrawColor(m_renderer, 255, 255, 255, 255);for (int i = 0; i < m_bullets.size(); i++) {SDL_RenderFillRect(m_renderer, &m_bullets[i]);}}bool collide(SDL_Rect rect) {for (int i = 0; i < m_bullets.size(); i++) {if (SDL_HasIntersection(&m_bullets[i], &rect)) {m_bullets.erase(m_bullets.begin() + i);return true;}}return false;}private:SDL_Renderer* m_renderer;SDL_Texture* m_texture;SDL_Rect m_rect;std::vector<SDL_Rect> m_bullets;};int main(int argc, char *argv[]) {// Inisialisasi SDLSDL_Init(SDL_INIT_EVERYTHING);// Buat windowSDL_Window* window = SDL_CreateWindow("Game Tembak", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_SHOWN);// Buat rendererSDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);// Buat backgroundBackground background(renderer);// Buat playerPlayer player(renderer);// Loop utamabool quit = false;while (!quit) {// Event handlingSDL_Event event;while (SDL_PollEvent(&event)) {switch (event.type) {case SDL_QUIT:quit = true;break;case SDL_KEYDOWN:switch (event.key.keysym.sym) {case SDLK_LEFT:player.move(-10, 0);break;case SDLK_RIGHT:player.move(10, 0);break;case SDLK_UP:player.move(0, -10);break;case SDLK_DOWN:player.move(0, 10);break;case SDLK_SPACE:player.shoot();break;}break;}}// Gambar backgroundbackground.draw();// Gambar playerplayer.draw();// Pindahkan peluruplayer.moveBullets();// Gambar peluruplayer.drawBullets();// Jika karakter bertabrakan dengan pesawat lawan, matikan gameif (player.collide(enemyRect)) {quit = true;}// RenderSDL_RenderPresent(renderer);}// Destroy renderer dan windowSDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);// Quit SDLSDL_Quit();return 0;}
Kode di atas menambahkan kelas Player yang menjadi karakter utama dalam game. Karakter tersebut dapat bergerak dan menembak peluru. Peluru di game ini berupa kotak putih sederhana. Jika peluru mengenai pesawat lawan, pesawat lawan akan hancur dan game akan berakhir.
Anda perlu membuat gambar player.bmp dan menaruhnya di folder proyek.
4. Membuat Musuh
Terakhir, kita akan membuat musuh dalam game. Buatlah file enemy.cpp dan masukkan kode berikut:
#include <SDL2/SDL.h>SDL_Rect enemyRect;class Enemy {public:Enemy(SDL_Renderer* renderer) {m_renderer = renderer;m_texture = SDL_CreateTextureFromSurface(m_renderer, SDL_LoadBMP("enemy.bmp"));m_rect.w = 50;m_rect.h = 50;m_rect.x = 400 - m_rect.w / 2;m_rect.y = 0 - m_rect.h;m_speed = 5;}~Enemy() {SDL_DestroyTexture(m_texture);}void draw() {SDL_RenderCopy(m_renderer, m_texture, NULL, &m_rect);}void move() {m_rect.y += m_speed;if (m_rect.y > 600) {m_rect.y = 0 - m_rect.h;m_rect.x = rand() % 800;}}bool collide(SDL_Rect rect) {if (SDL_HasIntersection(&m_rect, &rect)) {return true;}return false;}private:SDL_Renderer* m_renderer;SDL_Texture* m_texture;SDL_Rect m_rect;int m_speed;};int main(int argc, char *argv[]) {// Inisialisasi SDLSDL_Init(SDL_INIT_EVERYTHING);// Buat windowSDL_Window* window = SDL_CreateWindow("Game Tembak", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_SHOWN);// Buat rendererSDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);// Buat backgroundBackground background(renderer);// Buat playerPlayer player(renderer);// Buat enemyEnemy enemy(renderer);// Loop utamabool quit = false;while (!quit) {// Event handlingSDL_Event event;while (SDL_PollEvent(&event)) {switch (event.type) {case SDL_QUIT:quit = true;break;case SDL_KEYDOWN:switch (event.key.keysym.sym) {case SDLK_LEFT:player.move(-10, 0);break;case SDLK_RIGHT:player.move(10, 0);break;case SDLK_UP:player.move(0, -10);break;case SDLK_DOWN:player.move(0, 10);break;case SDLK_SPACE:player.shoot();break;}break;}}// Gambar backgroundbackground.draw();// Gambar playerplayer.draw();// Pindahkan peluruplayer.moveBullets();// Gambar peluruplayer.drawBullets();// Pindahkan musuhenemy.move();// Gambar musuhenemy.draw();// Jika karakter bertabrakan dengan musuh, matikan gameif (enemy.collide(player.getRect())) {quit = true;}// RenderSDL_RenderPresent(renderer);}// Destroy renderer dan windowSDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);// Quit SDLSDL_Quit();return 0;}
Kode di atas menambahkan kelas Enemy yang menjadi musuh dalam game. Musuh tersebut berupa pesawat yang terus bergerak ke bawah dan diacak lokasinya setiap kali mencapai batas bawah window. Jika karakter utama bertabrakan dengan musuh, game akan berakhir.
Anda perlu membuat gambar enemy.bmp dan menaruhnya di folder proyek.
FAQ
1. Apa yang dibutuhkan untuk membuat game tembak sederhana? |
Anda membutuhkan Codeblock dan bahasa pemrograman C++. |
2. Apa itu library SDL? |
SDL adalah library yang mendukung pembuatan game dengan berbagai jenis platform. |
3. Bagaimana cara membuat peluru dan musuh di game? |
Untuk membuat peluru dan musuh, Anda perlu membuat kelas masing-masing dan menambahkan logika pergerakan pada loop utama game. |
Semoga Bermanfaat dan sampai jumpa di artikel menar