• Tidak ada hasil yang ditemukan

Pembuatan Game Tebak Tentara di Pascal (Part 1)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pembuatan Game Tebak Tentara di Pascal (Part 1)"

Copied!
16
0
0

Teks penuh

(1)
(2)

Pembuatan Game Tebak Tentara di Pascal

(Part 1)

Oleh: Yudi Setiawan

Pada kesempatan ini, saya akan membuat tutorial tentang cara membuat

game tebak tentara. Game ini berbasis console jadi, tidak ada graphics

yang cantik seperti yang Anda bayangkan. Namun, pada game ini mungkin

bisa melatih atau meningkatkan pola pikir algoritma pemrograman Anda.

Tutorial ini lumayan...

Pada kesempatan ini, saya akan membuat tutorial tentang cara membuat game tebak tentara. Game ini berbasis console jadi, tidak ada graphics yang cantik seperti yang Anda bayangkan. Namun, pada game ini mungkin bisa melatih atau meningkatkan pola pikir algoritma pemrograman Anda. Tutorial ini lumayan panjang jadi, saya akan membuatnya secara bertahap. Untuk part 1, saya akan membuatnya sampai sebatas tampilannya saja. Dan mudah-mudahan tutorial ini bisa cepat selesai. Pada tutorial ini, saya menggunakan bahasa Pascal. Mungkin bagi Anda yang belum bisa Pascal bisa mencobanya di bahasa pemrograman lainnya yang bisa Anda kuasai.

Dalam pembuatan game ini beberapa teknik yang akan kita pakai ialah, If Else, Prosedur(disebut method dalam Java), Perulangan(Looping), Array 1 dan 2 dimensi. Untuk mempersingkat waktu langsung saja ikuti tutorial berikut secara bertahap dan pelan – pelan.

Pertama, buat coding seperti berikut. Pada coding ini, kita hanya mendeklarasikan variable dan 1.

array yang akan kita pakai nantinya dalam pembuatan game ini. {Deklarasi Variable dan Array}

var

nama_user :string;

MyArmy_X :array[1..4] of integer; MyArmy_Y :array[1..4] of integer; ComArmy_X :array[1..4] of integer; ComArmy_Y :array[1..4] of integer; Kondisi_MyArmy_XY :array[1..4, 1..4] of string; Kondisi_ComArmy_XY :array[1..4, 1..4] of string; user, com :string;

tebak_x_user :integer; tebak_y_user :integer; tebak_x_com :integer; tebak_y_com :integer; benar :boolean; again :boolean; skor_user :integer; skor_com :integer; x, y, z :integer;

Setelah itu, buatlah prosedur berikut untuk menginisialisasikan nilai Array yang akan kita pakai 2.

(3)

{Prosedur Inisialisasi Kondisi MyArmy XY dan Kondisi ComArmy XY} procedure InitKondisiMyArmy; var a, b, c :integer; begin for a := 1 to 4 do begin for b := 1 to 4 do begin Kondisi_MyArmy_XY[a, b] := 'tutup'; Kondisi_ComArmy_XY[a, b] := 'tutup'; end; end; end;

Dan ketiga, tambahkan coding berikut ke dalam Main. Dimana, coding ini akan menampilkan 3.

interface yang akan menanyakan Nama user. (*Tanya nama si user*)

write('Masukkan Nama Anda : '); readln(nama_user);

Keempat, tambahkan coding berikut setelah coding diatas. Dimana, coding berikut akan 4.

menanyakan si user dimana posisi tentara si user akan diletakkan.

(*Buat inputan untuk menanyakan mau diposisikan dimana tentara si user*) gotoxy(1, wherey+1);

write('Posisikan tentara kamu pada Koordinat berikut'); (*Posisi semua tentara tidak boleh ada yang sama*) (*Tentara 1*)

again := false; repeat

begin

gotoxy(1, wherey+1);

write('Tentara 1, Koordinat X [1..4] : '); readln(MyArmy_X[1]); write('Tentara 1, Koordinat Y [1..4] : '); readln(MyArmy_Y[1]); again := true;

(*Posisi tentara harus berada diantara 1 sampai 4*)

if(MyArmy_X[1] < 1) or (MyArmy_Y[1] < 1) or (MyArmy_X[1] > 4) or (MyArmy_Y[1] > 4) then

begin

writeln('Koordinat harus diantara 1 - 4 !!!'); again := false;

end; end

until again = true; (*Tentara 2*) again := false; repeat

begin

gotoxy(wherex, wherey+1);

write('Tentara 2, Koordinat X [1..4] : '); readln(MyArmy_X[2]); write('Tentara 2, Koordinat Y [1..4] : '); readln(MyArmy_Y[2]);

(4)

again := true;

if(MyArmy_X[2] < 1) or (MyArmy_Y[2] < 1) or (MyArmy_X[2] > 4) or (MyArmy_Y[2] > 4) then

begin

writeln('Koordinat harus diantara 1 - 4 !!!'); again := false;

end;

(*Cek apakah posisi tentara 2 sudah ditempati oleh tentara 1*)

if(MyArmy_X[2] = MyArmy_X[1]) and (MyArmy_Y[2] = MyArmy_Y[1]) then begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!'); again := false;

end; end

until again = true; (*Tentara 3*) again := false; repeat

begin

gotoxy(wherex, wherey+1);

write('Tentara 3, Koordinat X [1..4] : '); readln(MyArmy_X[3]); write('Tentara 3, Koordinat Y [1..4] : '); readln(MyArmy_Y[3]); again := true;

if(MyArmy_X[3] < 1) or (MyArmy_Y[3] < 1) or (MyArmy_X[3] > 4) or (MyArmy_Y[3] > 4) then

begin

writeln('Koordinat harus diantara 1 - 4 !!!'); again := false;

end;

(*Cek apakah posisi tentara 3 sudah ditempati oleh tentara 1 atau 2*) if(MyArmy_X[3] = MyArmy_X[1]) and (MyArmy_Y[3] = MyArmy_Y[1]) then begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!'); again := false;

end

else if(MyArmy_X[3] = MyArmy_X[2]) and (MyArmy_Y[3] = MyArmy_Y[2]) then begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!'); again := false;

end; end

(5)

(*Tentara 4*) again := false; repeat

begin

gotoxy(wherex, wherey+1);

write('Tentara 4, Koordinat X[1..4] : '); readln(MyArmy_X[4]); write('Tentara 4, Koordinat Y[1..4] : '); readln(MyArmy_Y[4]); again := true;

if(MyArmy_X[4] < 1) or (MyArmy_Y[4] < 1) or (MyArmy_X[4] > 4) or (MyArmy_Y[4] > 4) then

begin

writeln('Koodinat harus diantara 1 - 4 !!!'); again := false;

end;

(*Cek apakah posisi tentara sudah ditempati oleh tentara 1, 2 atau 3*) if(MyArmy_X[4] = MyArmy_X[1]) and (MyArmy_Y[4] = MyArmy_Y[1]) then begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!'); again := false;

end

else if(MyArmy_X[4] = MyArmy_X[2]) and (MyArmy_Y[4] = MyArmy_Y[2]) then begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!'); again := false;

end

else if(MyArmy_X[4] = MyArmy_X[3]) and (MyArmy_Y[4] = MyArmy_Y[3]) then begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!'); again := false;

end; end

until again = true;

Kelima, coding berikut akan mencetak layout Area User dan layout Area Musuh. 5.

(*Cetak layout area user dan area musuh*)

while((user <> 'win') and (com <> 'win')) do begin

clrscr;

writeln('Tebak posisi koordinat tentara musuh yang bersembunyi'); (*Cetak Header Layout area user dan area musuh*)

gotoxy(wherex, wherey+1); write('==Area User=='); gotoxy(20, wherey); write('=Area Musuh=');

(6)

gotoxy(3, wherey+1); for x := 1 to 4 do begin write(x); gotoxy(wherex+2, wherey); end;

(*Cetak Angka Koordinat X di Area Musuh*) gotoxy(22, wherey); for x := 1 to 4 do begin write(x); gotoxy(wherex+2, wherey); end;

(*Cetak Angka Koordinat Y di Area User*) gotoxy(1, wherey+2); for x := 1 to 4 do begin write(x); gotoxy(1, wherey+2); end;

(*Cetak Angka Koordinat Y di Area Musuh*) gotoxy(20, wherey-8); for x := 1 to 4 do begin write(x); gotoxy(20, wherey+2); end;

(*Cetak Kotak Persembunyian di Area User*) gotoxy(3, wherey-8);

for x := 1 to 4 do begin

for y := 1 to 4 do begin

(*Cek status tiap kotak persembunyian untuk Area User*) if(Kondisi_MyArmy_XY[y, x] = 'tutup') then

begin

write(chr(219)); end

else if(Kondisi_MyArmy_XY[y, x] = 'buka_salah') then begin

write('X'); end

else if(Kondisi_MyArmy_XY[y, x] = 'buka_benar') then begin

write(chr(258)); end;

(7)

end;

gotoxy(3, wherey+2); end;

(*Cetak Kotak Persembunyian di Area Musuh*) gotoxy(22, wherey-8);

for x := 1 to 4 do begin

for y := 1 to 4 do begin

(*Cek status tiap kotak persembunyian untuk Area Musuh*) if(Kondisi_ComArmy_XY[y, x] = 'tutup') then

begin

write(chr(219)); end

else if(Kondisi_ComArmy_XY[y, x] = 'buka_salah') then begin

write('X'); end

else if(Kondisi_ComArmy_XY[y, x] = 'buka_benar') then begin write(chr(258)); end; gotoxy(wherex+2, wherey); end; gotoxy(22, wherey+2); end; end;

Dan coding berikut, akan menampilkan skor si user dan si computer. Letakkan setelah coding 6.

diatas dan di dalam blok statement looping repeat - until. (*Cetak Skor si User*)

gotoxy(1, wherey+1);

write('Skor User : ', skor_user); (*Cetak Skor si Com*)

gotoxy(20, wherey);

write('Skor Musuh : ', skor_com);

Dan yang terakhir, coding ini akan menanyakan si user untuk menebak kira - kira dimana posisi 7.

tentara musuh bersembunyi.

(*Masukan untuk menebak Koordinat dimana posisi tentara musuh berada*) gotoxy(1, wherey+2);

write('Masukkan Koordinat X untuk Musuh [1..4] : '); readln(tebak_x_user); gotoxy(1, wherey+1);

write('Masukkan Koordinat Y untuk Musuh [1..4] : '); readln(tebak_y_user);

(8)

(*

Author Yudi Setiawan *)

program TebakTentara; uses crt;

{Deklarasi Variable dan Array} var

nama_user :string;

MyArmy_X :array[1..4] of integer; MyArmy_Y :array[1..4] of integer; ComArmy_X :array[1..4] of integer; ComArmy_Y :array[1..4] of integer; Kondisi_MyArmy_XY :array[1..4, 1..4] of string; Kondisi_ComArmy_XY :array[1..4, 1..4] of string; user, com :string;

tebak_x_user :integer; tebak_y_user :integer; tebak_x_com :integer; tebak_y_com :integer; benar :boolean; again :boolean; skor_user :integer; skor_com :integer; x, y, z :integer;

{Prosedur Inisialisasi Kondisi MyArmy XY dan Kondisi ComArmy XY} procedure InitKondisiMyArmyComArmy; var a, b, c :integer; begin for a := 1 to 4 do begin for b := 1 to 4 do begin Kondisi_MyArmy_XY[a, b] := 'tutup'; Kondisi_ComArmy_XY[a, b] := 'tutup'; end; end; end; {Main} begin (*Panggil prosedur*) InitKondisiMyArmyComArmy; (*Clear Screen*) clrscr;

(9)

(*Set status si user dan com masih natural*) user := 'natural';

com := 'natural';

(*Set Skor user dan Skor com masih nol*) skor_user := 0;

skor_com := 0;

(*Tanya nama si user*)

write('Masukkan Nama Anda : '); readln(nama_user);

(*Buat inputan untuk menanyakan mau diposisikan dimana tentara si user*)

gotoxy(1, wherey+1);

write('Posisikan tentara kamu pada Koordinat berikut'); (*Posisi semua tentara tidak boleh ada yang sama*) (*Tentara 1*) again := false; repeat begin gotoxy(1, wherey+1); write('Tentara 1, Koordinat X [1..4] : '); readln(MyArmy_X[1]); write('Tentara 1, Koordinat Y [1..4] : '); readln(MyArmy_Y[1]); again := true;

(*Posisi tentara harus berada diantara 1 sampai 4*)

if(MyArmy_X[1] < 1) or (MyArmy_Y[1] < 1) or (MyArmy_X[1] > 4) or (MyArmy_Y[1] > 4) then

begin

writeln('Koordinat harus diantara 1 - 4 !!!'); again := false;

end; end

until again = true; (*Tentara 2*) again := false; repeat begin gotoxy(wherex, wherey+1); write('Tentara 2, Koordinat X [1..4] : '); readln(MyArmy_X[2]); write('Tentara 2, Koordinat Y [1..4] : '); readln(MyArmy_Y[2]); again := true;

if(MyArmy_X[2] < 1) or (MyArmy_Y[2] < 1) or (MyArmy_X[2] > 4) or (MyArmy_Y[2] > 4) then

(10)

begin

writeln('Koordinat harus diantara 1 - 4 !!!'); again := false;

end;

(*Cek apakah posisi tentara 2 sudah ditempati oleh tentara 1*)

if(MyArmy_X[2] = MyArmy_X[1]) and (MyArmy_Y[2] = MyArmy_Y[1]) then

begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!');

again := false; end;

end

until again = true; (*Tentara 3*) again := false; repeat begin gotoxy(wherex, wherey+1); write('Tentara 3, Koordinat X [1..4] : '); readln(MyArmy_X[3]); write('Tentara 3, Koordinat Y [1..4] : '); readln(MyArmy_Y[3]); again := true;

if(MyArmy_X[3] < 1) or (MyArmy_Y[3] < 1) or (MyArmy_X[3] > 4) or (MyArmy_Y[3] > 4) then

begin

writeln('Koordinat harus diantara 1 - 4 !!!'); again := false;

end;

(*Cek apakah posisi tentara 3 sudah ditempati oleh tentara 1 atau 2*)

if(MyArmy_X[3] = MyArmy_X[1]) and (MyArmy_Y[3] = MyArmy_Y[1]) then

begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!');

again := false; end

else if(MyArmy_X[3] = MyArmy_X[2]) and (MyArmy_Y[3] = MyArmy_Y[2]) then

begin

writeln('Cari tempat lain...');

(11)

sebelumnya !!!');

again := false; end;

end

until again = true; (*Tentara 4*) again := false; repeat begin gotoxy(wherex, wherey+1); write('Tentara 4, Koordinat X[1..4] : '); readln(MyArmy_X[4]);

write('Tentara 4, Koordinat Y[1..4] : '); readln(MyArmy_Y[4]);

again := true;

if(MyArmy_X[4] < 1) or (MyArmy_Y[4] < 1) or (MyArmy_X[4] > 4) or (MyArmy_Y[4] > 4) then

begin

writeln('Koodinat harus diantara 1 - 4 !!!'); again := false;

end;

(*Cek apakah posisi tentara sudah ditempati oleh tentara 1, 2 atau 3*)

if(MyArmy_X[4] = MyArmy_X[1]) and (MyArmy_Y[4] = MyArmy_Y[1]) then

begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!');

again := false; end

else if(MyArmy_X[4] = MyArmy_X[2]) and (MyArmy_Y[4] = MyArmy_Y[2]) then

begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!');

again := false; end

else if(MyArmy_X[4] = MyArmy_X[3]) and (MyArmy_Y[4] = MyArmy_Y[3]) then

begin

writeln('Cari tempat lain...');

writeln('Posisi telah ditempati oleh tentara sebelumnya !!!');

again := false; end;

(12)

until again = true;

(*Cetak layout area user dan area musuh*) while((user <> 'win') and (com <> 'win')) do begin

clrscr;

writeln('Tebak posisi koordinat tentara musuh yang bersembunyi');

(*Cetak Header Layout area user dan area musuh*) gotoxy(wherex, wherey+1);

write('==Area User=='); gotoxy(20, wherey); write('=Area Musuh=');

(*Cetak Angka Koordinat X di Area User*) gotoxy(3, wherey+1); for x := 1 to 4 do begin write(x); gotoxy(wherex+2, wherey); end;

(*Cetak Angka Koordinat X di Area Musuh*) gotoxy(22, wherey); for x := 1 to 4 do begin write(x); gotoxy(wherex+2, wherey); end;

(*Cetak Angka Koordinat Y di Area User*) gotoxy(1, wherey+2); for x := 1 to 4 do begin write(x); gotoxy(1, wherey+2); end;

(*Cetak Angka Koordinat Y di Area Musuh*) gotoxy(20, wherey-8); for x := 1 to 4 do begin write(x); gotoxy(20, wherey+2); end;

(*Cetak Kotak Persembunyian di Area User*) gotoxy(3, wherey-8);

for x := 1 to 4 do begin

(13)

for y := 1 to 4 do begin

(*Cek status tiap kotak persembunyian untuk Area User*)

if(Kondisi_MyArmy_XY[y, x] = 'tutup') then begin write(chr(219)); end else if(Kondisi_MyArmy_XY[y, x] = 'buka_salah') then begin write('X'); end else if(Kondisi_MyArmy_XY[y, x] = 'buka_benar') then begin write(chr(258)); end; gotoxy(wherex+2, wherey); end; gotoxy(3, wherey+2); end;

(*Cetak Kotak Persembunyian di Area Musuh*) gotoxy(22, wherey-8);

for x := 1 to 4 do begin

for y := 1 to 4 do begin

(*Cek status tiap kotak persembunyian untuk Area Musuh*)

if(Kondisi_ComArmy_XY[y, x] = 'tutup') then begin write(chr(219)); end else if(Kondisi_ComArmy_XY[y, x] = 'buka_salah') then begin write('X'); end else if(Kondisi_ComArmy_XY[y, x] = 'buka_benar') then begin write(chr(258)); end; gotoxy(wherex+2, wherey); end; gotoxy(22, wherey+2); end;

(14)

(*Cetak Skor si User*) gotoxy(1, wherey+1);

write('Skor User : ', skor_user); (*Cetak Skor si Com*)

gotoxy(20, wherey);

write('Skor Musuh : ', skor_com);

(*Masukan untuk menebak Koordinat dimana posisi tentara musuh berada*)

gotoxy(1, wherey+2);

write('Masukkan Koordinat X untuk Musuh [1..4] : '); readln(tebak_x_user);

gotoxy(1, wherey+1);

write('Masukkan Koordinat Y untuk Musuh [1..4] : '); readln(tebak_y_user);

end; readln; end.

Berikut hasil dari tahap pertama ini. Untuk latar belakangnya bisa berwarna, itu saya menggunakan textBackground. Bisa Anda cari di google. Dan mungkin untuk tahap pertama ini Anda bisa bereksperimen sendiri untuk mewarnai latar belakangnya ataupun warna teksnya.

Sekian untuk tutorial tahap pertama ini. Tunggu tutorial tahap keduanya ya.

(15)
(16)

Yudi Setiawan

Saat ini aktif sebagai Mahasiswa di salah satu Universitas di kota Medan dengan mengambil bidang Fakultas Teknik dan Ilmu Komputer. Sangat senang dengan bahasa pemrograman Java dan Android.

Referensi

Dokumen terkait

Dalam Macromedia Flash, animasi jenis ini didapatkan dengan teknik animasi path, teknik ini menggunakan layer tersendiri yang didefinisikan sebagai lintasan

Selanjutnya dari hasil refleksi pada pengamatan selama berlangsungnya siklus 2 diperoleh kemampuan guru dalam mengelola pembelajaran dengan model pembelajaran

SECARA ETIMOLOGI PENDIDIK ADALAH “ORANG YANG MELAKUKAN BIMBINGAN, PENGERTIAN INI MEMBERI KESAN BAHWA PENDIDIK (PENDIDIK) ADALAH ORANG YANG MELAKUKAN KEGIATAN DALAM

Penelitian ini dilakukan oleh Ni Wayan Rustiarini (2016) yang berjudul “ Good Governance dalam Pengelolaan Dana Desa” Dalam penelitian ini diperoleh hasil penelitian

Bagi ibu yang belum pernah mempunyai pengalaman melahirkan sebelumnya (nullipara) banyak yang mengalami kecemasan berat, dikarenakan ibu takut akan pikiran dan

Gambar 4.29 Grafik hubungan daya pada pipa osilasi dengan waktu dalam variasi setiap bukaan keran, pendingin udara, ketinggian air awal diatas evaporator. Untuk percobaan

dari hasil uji impact pada specimen dengan serat gelas didapat kekuatn impact terendah pada specimen dengan volume serat 20% sehingga didapat kekuatan

Hasil penelitian menunjukan bahwa penerapan otonomi dalam pengelolaan keuangan desa di Kecarnatan Singkep Barat - Kabupaten Lingga belwn berjalan secara optimal, karena i