Anda di halaman 1dari 30

FINAL PROYEK KONSEP PEMROGRAMAN

“Pembuatan Game - Tetris”

Disusun Oleh:

1. Dzaky Muhammad Zidane L0122048

2. Dzakyudin Fathu Rohman L0122049

3. Edo Karnaedi L0122050

4. Ikhsan Ari Novianto L0122077

KELAS B

PROGRAM STUDI INFORMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN

ALAM UNIVERSITAS SEBELAS MARET

2022/2023
A. Hasil dan Cara Penggunaan
1. Tampilan hasil game

a. Tampilan Main Game

b. Tampilan Game Over


2. Penjelasan gameplay
Tetris merupakan game teka-teki bertipe single player yang dikembangkan oleh
Kelompok 1. Pada game ini terdapat beberapa bentuk balok yang secara acak akan jatuh
dari atas ke bawah. Tugas player dalam game ini yaitu menjadikan satu baris atau lebih
secara penuh dengan berbagai bentuk balok dengan posisi horizontal. Jika player berhasil
menjadikan satu baris horizontal maka baris tersebut akan hilang dan jika ada bagian di
atas baris tersebut akan turun menggantikan baris yang hilang.
Player dapat menggerakan balok dengan tombol arrow ← ↑ → ↓. Player juga
dapat merotasi bentuk balok dengan tombol ‘C’ untuk rotasi ke kanan dan ‘Z’ untuk rotasi
ke kiri. Tombol ‘Spasi’ juga dapat digunakan untuk instant place block. Player bertugas
untuk mendapatkan poin sebanyak mungkin. Setiap player yang berhasil menjadikan satu
baris akan mendapatkan satu poin. Game akan berhenti/kalah jika balok telah tertumpuk
sampai bagian baris paling atas. Jika ingin merestart permainan tekan tombol ‘Enter’.
B. Source Code
Berikut merupakan full source code dari program kami. Source code tersebut juga bisa
diakses di link google drive berikut ini.

https://drive.google.com/file/d/1iXCcQiegPvyKJ0pbNmBjRjR5sbl40XfR/view?usp=sharing

Pada game ini terdapat 5 file berekstensi .cpp beserta headernya (.hpp) dengan masing-masing
diberi nama :

1. Main.cpp + Global.hpp + GetTetromino.hpp


2. Tetromino.cpp + Global.hpp + GetTetromino.hpp + GetWallKickData.hpp +
Tetromino.hpp
3. GetTetromino.cpp + Goblal.hpp + GetTetromino.hpp
4. GetWallKickData.cpp + Global.hpp + GetWallKickData.hpp
5. DrawText.cpp + DrawText.hpp
Berikut cuplikan source code tiap file

1. Main.cpp
2. Tetromino.cpp
3. GetTetromino.cpp
4. GetWallKickData.cpp

5. DrawText.cpp
C. Penjelasan
1. Bahasa dan aplikasi yang digunakan
Pada pembuatan game “Tetris” kami menggunakan aplikasi VS Code
dengan bahasa pemrograman C++, lalu kami menggunakan External Library SFML
serta dengan bantuan CMake untuk menggabungkan source code dan aset dalam
perancangan game tersebut.

2. Penjelasan aset yang digunakan


a) Gambar
● Tampilan balok

Gambar di atas merupakan tampilan balok-balok yang akan


digunakan dalam permainan tetris. Terdapat 6 bentuk balok yang
digunakan. Setiap balok memiliki warna yang berbeda masing-masing.
Balok tersebut dapat dirotasikan ke kanan dan ke kiri.
● Tempat penyusunan balok

Tampilan di atas digunakan untuk menaruh balok-balok yang akan


disusun. Ukuran dari tempat diatas menggunakan 20 baris dan 10 kolom

● Background lines dan speed


Pada gambar diatas digunakan untuk tampilan background pada
bagian lines/score dan speed.

● Background Game Over

Gambar di atas merupakan tampilan akhir yang menandakan bahwa


game sudah berakhir. Game akan berakhir jika balok telah mencapai line
pertama. Tampilan balok akan berubah menjadi warna yang sama yaitu abu-abu.
Tombol enter digunakan untuk merestart permainan.

b) Fonts

Font di atas menunjukkan score lines dan speed.

3. Penjelasan source code


3.1. Library
Berikut adalah beberapa library header yang kami pakai dalam program ini.
#include <chrono>
#include <random>
#include <SFML/Graphics.hpp>
#include <iostream>
#include <vector>
#include "Headers/DrawText.hpp"
#include "Headers/Global.hpp"
#include "Headers/GetTetromino.hpp"
#include "Headers/GetWallKickData.hpp"
#include "Headers/Tetromino.hpp"
#pragma once

Library “Graphics.hpp” digunakan untuk memanggil beberapa fitur seperti Texture,


Sprite, RenderWindow, Font, dll. Library “iostream” merupakan header untuk standar
input output. Library “vector” digunakan untuk menggunakan fitur vektor. Library
“random” digunakan untuk memanggil fitur mengacak atau random.. Library “chrono”
digunakan untuk durasi dan waktu. Library “Headers/…” yaitu digunakan untuk
memanggil fungsi yang telah dibuat manual. Terakhir menggunakan “#pragma once”
untuk mempercepat build game.

3.2. Fungsi pada Headers


Pada Headers terdapat beberapa code penting.
Pada code diatas menggunakan “constexpr unsigned char” untuk mengeset berbagai
ukuran fitur yang ada dalam game serta speed dan "constexpr unsigned short” untuk
mengeset durasi frame. Kemudian menggunakan struct Position yang dideklarasikan
dengan variabel char x dan char y.

Pada kode diatas digunakan untuk mengeset berbagai macam gameplay seperti move,
rotate, dll

3.3. Fungsi mainGame


Pada fungsi mainGame beberapa fitur penting diantaranya.

Kode diatas digunakan untuk merender window dan mengeset ukuran sesuai yang sudah
ditentukan pada headers.

Kode diatas digunakan untuk mengambil gambar sesuai folder dan nama gambar
tersebut. Kemudian mengatur ukuran serta tata letak dari gambar.

Kode diatas merupakan looping dari game ketika berjalan dan akan berhenti ketika di
close.
Kode diatas merupakan kode untuk kontrol keyboard dari game sesuai yang sudah ada
dari penjelasan gameplay.
window.draw(backgroundSp);
window.draw(backgroundSp2);
window.draw(backgroundSp3);
window.draw(backgroundSp4);
Kode diatas digunakan untuk menaruh gambar pada game
Kode diatas digunakan untuk manembah clear line ketika sudah jadi 1 baris dan
menambah speed

Kode diatas adalah kode untuk membentuk kolom


3.4. Fungsi GameOver
Beberapa fungsi GameOver penting yaitu.

Kode diatas digunakan untuk mengulang kembali game dengan menekan enter.
Kode diatas digunakan untuk menghentikan game ketika game mencapai ujung.

3.5. Fungsi GetWallKick

Kode diatas digunakan agar ketika merotasi di tembok tidak menembus.

3.6. Fungsi GetTetromino


Kode diatas digunakan untuk mengambil berbagai bentuk tetromino atau block yang sudah
dibuat
D. Credit Game
Berikut adalah beberapa credit yang kami pakai dalam pembuatan game ini.

Fonts :
● https://github.com/Kofybrek/Tetris/blob/Main/Source/Resources/Images/Font.png

Images :
● https://www.clipartmax.com/middle/m2i8Z5K9A0H7G6G6_who-should-you-pick-as-your-
starting-pok%C3%A9monyou-got-squirtle-png/
● https://www.clipartmax.com/middle/m2i8Z5K9N4i8H7A0_woohoo%C2%B6-pokemon-
charmander/
● https://www.clipartmax.com/middle/m2i8Z5K9A0H7H7b1_bulbasaur-png/
● https://www.clipartmax.com/middle/m2i8i8d3b1Z5K9H7_tired-pikachu-pokemon-lets-go-
pikachu/

Anda mungkin juga menyukai