hangman-1
DESCRIPTION
ASDFTRANSCRIPT
BAB I
PENDAHULUAN
2.1 Latar Belakang
Permainan hangman adalah permainan tebak kata untuk satu atau lebih pemain. Satu
pemain berpikir tentang frase atau kata dan yang lainnya mencoba menebak kata tersebut. Kata
yang harus ditebak diwakili oleh deretan tanda hubung, dimana tanda hubung tersebut sesuai
dengan jumlah kata dan pemain tersebut harus menentukan kategori katanya. Jika pemain yang
menebak dapat menebak huruf dengan benar, maka huruf akan tercetak dalam posisi yang benar.
Jika huruf yang ditebak salah, maka elemen gambar orang menggantung sebagai tanda
pengitungan kesalahan akan bertambah. Permainan berakhir jika pemain menebak seluruh kata
dengan benar, atau pemain tidak dapat menebak dan terbentuk gambar manusia
tergantung sempurna. Permainan hangman sering kita jumpai dalam kamus elektronik
ataupun game dalam komputer maupun handphone.
Bahasa C merupakan bahasa yang paling populer di dunia pemrograman. Beberapa
faktor yang mendukung kepopuleran C ini antara lain adalah tersedianya fasilitas
pemrograman yang cukup lengkap untuk membangun berbagai aplikasi, antara lain : jenis
data (pointer, array, string), operator dan struktur kendali, serta fungsi-fungsi pustaka standar
yang dapat digunakan untuk kegunaan input/output, alokasi tempat penyimpanan,
mengolah string, dan lain-lain. Dengan keunggulan bahasa C tersebut, timbul rasa rasa
ketertarikan yang besar untuk memperdalam permainan tebak kata Hangman dalam
bahasa C, sehingga dalam pembuatan tugas akhir Algoritma dan Pemrogaman kami
mempunyai ide untuk membuat permainan hangman dalam bahasa C.
2.2 Rumusan Masalah
a. Bagaimana deskripsi program permainan hangman dalam bahasa C?
b. Bagaimana alur program permainan hangman?
2.3 Tujuan
a. Mengetahui deskripsi permainan hangman dalam bahasa C.
b. Mengetahui alur program permainan hangman.
2
BAB II
LANDASAN TEORI
2.1 Pengenalan Bahasa C
a. Baris Komentar
Baris komentar adalah baris-baris yang menjelaskan maksud dari perubah yang
digunakanatau maksud dari program itu sendiri. Hal ini dimaksudkan untuk memudahkan
pelacakanatas perubah yang digunakan apabila program yang digunakan cukup besar
ataumemudahkan orang lain memahami program yang kita buat. Dalam program, baris
komentar diletakkan diantara tanda /* dan */ dan baris ini tidak dikerjakan oleh
komputer,hanya dianggap sebagai baris kosong.
b. Struktur Bahasa C
Bentuk program C mirip dengan kebanyakan program bahasa tingkat tinggi
lainnya. Bentuk programnya adalah :
Judul Program
Daftar Header
File
Deklarasi
Deskripsi
c. Judul Program
Judul program sifatnya sebagai dokumentasi saja, tidak signifikan terhadap
prosesprogram. Ditulis dalam bentuk baris komentar. Contoh :
Daftar Header File
C menyediakan sejumlah file judul (header file) yaitu file yang umumnya
berisiprototipe fungsi, definisi makro, variabel dan definisi tipe. File ini
mempunyai ciriyaitu namanya diakhiri dengan extension .h.Contoh :Keterangan :
menyatakan bahwa agar membaca file bernama stdio.h saat pelaksanaan
kompilasi.
Deklarasi
3
Deklarasi adalah bagian untuk mendefinisikan semua nama yang dipakai
dalamprogram. Nama tersebut dapat berupa nama tetapan (konstanta), nama
variabel, namatipe, nama prosedur, nama fungsi.
Deskripsi
Bagian inti dari suatu program yang berisi uraian langkah-langkah penyelesaian
masalah. Program C pada hakekatnya tersusun atas sejumlah blok fungsi. Sebuah
program minimal mengandung sebuah fungsi. Setiap fungsi terdiri dari satu atau
beberapa pernyataan, yang secara keseluruhan dimaksudkan untuk melaksanakan
tugas khusus. Bagian pernyataan fungsi (disebut tubuh fungsi) diawali dengan
tanda { dan diakhiridengan tanda }
d. Variabel
Variabel dalam program digunakan untuk menyimpan suatu nilai tertentu dimana
nilai tersebut dapat berubah-ubah. Setiap variabel mempunyai tipe dan hanya data yang
bertipe sama dengan tipe variabel yang dapat disimpan di dalam variabel tersebut. Setiap
variable mempunyai nama. Pemisahan antar variabel dilakukan dengan memberikan
tanda koma.
e. Konstanta
Berbeda dengan variabel yang isinya bisa berubah selama eksekusi program
berlangsung,nilai suatu konstanta tidak bisa berubah
f. Fungsi main()
Fungsi main() harus ada pada program, karena fungsi inilah yang menjadi titik
awal dantitik akhir eksekusi program. Tanda { di awal fungsi menyatakan awal tubuh
fungsisekaligus awal eksekusi program, sedangkan tanda } di akhir fungsi merupakan
akhir tubuh fungsi dan sekaligus akhir eksekusi program.
g. Fungsi printf()
Merupakan fungsi yang digunakan untuk menampilkan data ke layar.
Denganmenggunakan fungsi ini, tampilan dapat diatur (diformat) dengan mudah.Bentuk
umum dari fungsi ini :printf(”string kontrol”, argumen1, argumen2, ....);String kontrol
yang akan ditampilkan, dapat berupa variabel, konstanta, maupun ungkapan.
4
h. Fungsi scanf()
Merupakan fungsi yang digunakan untuk menampilkan data yang dimasukkan
dari keyboard.
2.2 Pemilihan Kondisi
a. STRUKTUR KONDISI “IF….”
Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi suatu kondisi
tunggal. Bila proses yang diseleksi terpenuhi atau bernilai benar, maka pernyataan yang ada di
dalam blok if akan diproses dan dikerjakan.
b. STRUKTUR KONDISI “IF…...ELSE……”
Dalam struktur kondisi if.....else minimal terdapat dua pernyataan. Jika kondisi yang diperiksa
bernilai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang
diperiksa bernilai salah maka pernyataan yang kedua yang dilaksanakan.
c. STRUKTUR KONDISI “SWITCH…CASE….DEFAULT…”
Struktur kondisi switch....case....default digunakan untuk penyeleksian kondisi dengan
kemungkinan yang terjadi cukup banyak. Struktur ini akan melaksanakan salah satu dari
beberapa pernyataan ‘case’ tergantung nilai kondisi yang ada di dalam switch. Selanjutnya
proses diteruskan hingga ditemukan pernyataan ‘break’. Jika tidak ada nilai pada case yang
sesuai dengan nilai kondisi, maka proses akan diteruskan kepada pernyataan yang ada di bawah
‘default’
2.3 Perulangan
Dalam bahasa C tersedia suatu fasilitas yang digunakan untuk melakukan proses yang
berulangulang sebanyak keinginan kita. Misalnya saja, bila kita ingin menginput dan mencetak
bilangan dari 1 sampai 100 bahkan 1000, tentunya kita akan merasa kesulitan. Namun dengan
struktur perulangan proses, kita tidak perlu menuliskan perintah sampai 100 atau 1000 kali,
cukup dengan beberapa perintah saja. Struktur perulangan dalam bahasa C mempunyai bentuk
yang bermacam-macam.
5
a. STRUKTUR PENRULANGAN “WHILE”
Perulangan WHILE banyak digunakan pada program yang terstruktur. Perulanganini banyak
digunakan bila jumlah perulangannya belum diketahui. Proses perulangan akan terus berlanjut
selama kondisinya bernilai benar (true) dan akanberhenti bila kondisinya bernilai salah.
b. STRUKTUR PERULANGAN “DO…..WHILE….”
Pada dasarnya struktur perulangan do....while sama saja dengan struktur while, hanya saja pada
proses perulangan dengan while, seleksi berada di while yang letaknya di atas sementara pada
perulangan do....while, seleksi while berada di bawah batas perulangan. Jadi dengan
menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali perulangan.
c. STRUKTUR PERULANGAN “FOR”
Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah diketahui
jumlah perulangannya. Dari segi penulisannya, struktur perulangan for tampaknya lebih efisien
karena susunannya lebih simpel dan sederhana.
2.4 Fungsi
a. Pengertian Fungsi
Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas
tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi merupakan elemen
utama dalam bahasa C karena bahasa C sendiri terbentuk dari kumpulan fungsi-fungsi. Dalam
setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi main(). Fungsi banyak
diterapkan dalam program-program C yang terstruktur. Keuntungan penggunaan fungsi dalam
program yaitu program akan memiliki struktur yang jelas (mempunyai readability yang tinggi)
dan juga akan menghindari penulisan bagian program yang sama.
b. Beberapa Fungsi Pustaka pada Bahasa Pemrograman C
Fungsi Operasi String (tersimpan dalam header file “string.h”)
♦ strcpy()
Berfungsi untuk menyalin suatu string asal ke variable string tujuan.
Bentuk umum : strcpy(var_tujuan, string_asal);
♦ strlen()
Berfungsi untuk memperoleh jumlah karakter dari suatu string.
6
Bentuk umum : strlen(string);
♦ strcat()
Digunakan untuk menambahkan string sumber ke bagian akhir dari string tujuan.
Bentuk umum : strcat(tujuan, sumber);
♦ strupr()
Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf capital.
Bentuk umum : strupr(string);
♦ strlwr()
Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf kecil semua.
Bentuk umum : strlwr(string);
♦ strcmp()
Digunakan untuk membandingkan dua buah string.
Hasil dari fungsi ini bertipe integer dengan nilai :
(a) Negative, jika string pertama kurang dari string kedua.
(b) Nol, jika string pertama sama dengan string kedua
(c) Positif, jika string pertama lebih besar dari string kedua.
Bentuk umum : strcmp(string1, string2);
Fungsi Operasi Karakter (tersimpan dalam header “ctype.h”)
♦ islower()
Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter
merupakan huruf kecil.
Bentuk umum : islower(char);
♦ isupper()
Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan huruf kapital.
Bentuk umum : isupper(char);
♦ isdigit()
Fungsi akan menghasilkan nilai benar (bukan nol) jika karakter merupakan sebuah digit.
Bentuk umum : isdigit(char);
♦ tolower()
Fungsi akan mengubah huruf capital menjadi huruf kecil.
Bentuk umum : tolower(char);
♦ toupper()
7
Fungsi akan mengubah huruf kecil menjadi huruf kapital.
Bentuk umum : toupper(char);
Fungsi Operasi Matematik (tersimpan dalam header “math.h” dan “stdlib.h”)
♦ sqrt()
Digunakan untuk menghitung akar dari sebuah bilangan.
Bentuk umum : sqrt(bilangan);
♦ pow()
Digunakan untuk menghitung pemangkatan suatu bilangan.
Bentuk umum : pow(bilangan, pangkat);
♦ sin(), cos(), tan()
Masing-masing digunakan untuk menghitung nilai sinus, cosinus dan tangens dari suatu sudut.
Bentuk umum :
sin(sudut);
cos(sudut);
tan(sudut);
♦ atof()
Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe double.
Bentuk umum : atof(char x);
♦ atoi()
Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe integer.
Bentuk umum : atoi(char x);
♦ div()
Digunakan untuk menghitung hasil pembagian dan sisa pembagian.
Bentuk umum : div_t div(int x, int y)
Strukturnya :
typedef struct{
int qout; // hasil pembagian
int rem // sisa pembagian
} div_t;
♦ max()
Digunakan untuk menentukan nilai maksimal dari dua buah bilangan.
Bentuk umum : max(bilangan1, bilangan2);
8
♦ min()
Digunakan untuk menentukan bilangan terkecil dari dua buah bilangan.
Bentuk umum : min(bilangan1, bilangan2);
c. Membuat Fungsi Sendiri
Deklarasi Fungsi
Sebelum digunakan (dipanggil), suatu fungsi harus dideklarasikan dan didefinisikan terlebih dahulu.
Bentuk umum pendeklarasian fungsi adalah :
tipe_fungsi nama_fungsi(parameter_fungsi);
Sedangkan bentuk umum pendefinisian fungsi adalah :
Tipe_fungsi nama_fungsi(parameter_fungsi)
{
statement
statement
...
...
}
2.5 Statemen Peloncatan
Statemen peloncatan pada umumnya digunakan dalam sebuah proses pengulangan yang
menentukan apakah pengulangan akan diteruskan, dihentikan atau dipindahkan ke statemen lain di
dalam program. Dalam bahasa C, terdapat tiga buah kata kunci yang digunakan untuk melakukan proses
peloncatan tersebut, yaitu break, continue dan go to. Namun terdapat juga sebuah fungsi yang
digunakan untuk melakukan proses peloncatan, yaitu fungsi exit() yang disimpan dalam file header
<stdlib.h>.
1. Menggunakan Kata Kunci break
Statemen break digunakan untuk menghentikan sebuah pengulangan dan program akan
langsung meloncat ke statemen yang berada di bawah blok pengulangan. Ini biasanya dilakukan
karena alasan efesiensi program, yaitu untuk menghindari proses pengulangan yang sebenarnya
sudah tidak diperlukan lagi.
2. Menggunakan Kata Kunci kontinu
Berbeda dengan statemen break di atas yang berguna untuk menghentikan suatu proses
pengulangan, statemen continu justru digunakan untuk melanjutkan proses pengulangan.
Sebagai contoh apabila kita akan membuat program untuk melakukan pembagian dua buah
9
bilangan, maka kita harus menjaga agar bilangan pembagi (penyebut) harus tidak sama dengan
nol. Untuk kasus ini, kita akan membuat sebuah pengulangan untuk melakukan input sampai
bilangan pembagi yang dimasukkan tidak sama dengan nol
3. Menggunakan Kata Kunci go to
Selain cara-cara yang telah dijelaskan di atas, bahasa C juga menyediakan kata kunci ga to yang
digunakan agar program dapat meloncat ke baris tertentu yang kita pilih. Adpun untuk
menentukan baris tersebut kita harus membuat sebuah label, yaitu dengan menempatkan tanda
colon atau ( : ) di belakangnya, misalnya LBL:, LABEL:, mylabel: atau nama-nama lain yang anda
kehendaki. Berbeda dengan statemen break dan continu yang umumnya digunakan untuk
proses pengulangan, statemen go to dapat detempatkan di mana saja sesuai dengan kebutuhan
program. Berikut ini contoh yang akan menunjukkan penggunaan statemen go to di dalam
proses pengulangan.
4. Menggunakan Fungsi exit()
Berbeda dengan statemen break yang berguna untuk menghentikan atau keluar dari proses
pengulangan, fungsi exit () berguna untuk keluar dari program. Dalam bahasa C, terdapat dua
buah nilai yang dikembalikan ke dalam sistem operasi yang menunjukkan bahwa program
berjalan dengan baik (tanpa kesalahan) atau tidak. Nilai-nilai tersebut adalah 0 (EXIT_SUCCESS)
dan 1 (EXIT_FAILURE). Hal yang perlu diperhatikan sebelum kita menggunakan fungsi exit()
adalah kita harus mendaftarkan file header <stdlib.h> dimana fungsi tersebut dideklarasikan.
2.6 Jenis-jenis Header
#include <stdio.h> adalah Header yang hampir digunakan dalam semua program C, yaitu untuk
melakukan proses input-output. Adapun fungsi-fungsi yang terdapat di dalamnya adalah sebagai
berikut.
Printf (const char * format, …);
Fungsi ini digunakan untuk menampilkan data ke alat keluaran standar (misalnya monitor)
dengan format-format tertentu.
Fprintf (FILE *stream, const char *format, …);
Fungsi ini digunakan untuk melakukan penulisan ke dalam stream dengan format tertentu.
Void
Tipe data tak bertipe
For
10
For ini digunakan untuk menuliskan jenis pengulangan yang banyaknya sudah pasti atau telah
diketahui sebelumnya.
While
While adalah struktur pengulangan selain for, pada struktur pengulangan jenis ini kondisi akan
diperiksa di bagian awal. Hal ini tentu menyebabkan kemungkinan bahwa apabila ternyata
kondisi yang kita definisikan tidak terpenuhi (bernilai salah), maka proses pengulangan pun tidak
akan pernah dilakukan.
Double
Double dapat digunakan jika kita membutuhkan variabel yang dapat menampung tipe data
berkoma yang bernilai besar.
Fclose
Fungsi ini digunakan untuk menutup file yang sebelumnya telah dibuka dengan menggunakan
fungsi fopen()
Switch
Switch digunakan untuk melakukan pemilihan terhadap ekspresi atau kondisi yang memiliki
nilai0nilai konsta. Oleh karena itu, ekspresi yang didefinisikan harus menghasilkan nilai yang
bertipe bilangan bulat atau karakter. Untuk mendefinisikan nilai-nilai konstan tersebut adalah
dengan menggunakan kata kunci case. Hal yang perlu anda perhatikan juga dalam melakukan
pemilihan dengan menggunakan statamen switch ini adalah kita harus menambahkan statemen
break pada setiap nilai yang kita definisikan.
Fread
Fungsi ini digunakan untuk membaca data dari stream dan menyimpannya ke dalam array yang
ditunjuk oleh ptr. Fungsi tersebut membaca nobj elemen sebesar size byte sehingga total byte
yang dibaca adalah (nobj x size) byte.
Fwrite
Fungsi ini digunakan untuk menulis data dari stream dan menyimpannya ke dalam array yang
ditunjuk oleh ptr. Fungsi tersebut membaca nobj elemen sebesar size byte sehingga total byte
yang dibaca adalah (nobj x size) byte.
Fseek
Fungsi ini digunakan untuk mengeset posisi file untuk stream yang dispesifikasikan. Untuk file
biner posisi akan diset ke offset dari origin. Parameter origin dapat diisi nilai SEEK_SET (bagian
awal), SEEK_CURR (posisi aktif) dan SEEK_END (bagian akhir atau end of file). Sedangkan untuk
11
file teks, maka offset harus bernilai 0 atau nilai yang dikembalikan oleh fungsi ftell(), dimana
parameter origin juga harus diset dengan nilai SEEK_SET. Fungsi ini akan mengembalikan nilai
selain nol apabila terjadi kesalahan.
#include <stdlib.h> adalah Header yang menyimpan fungsi0fungsi yang akan digunakan untuk
melakukan pengkonversian bilangan, alokasi memori dan pekerjaan-pekerjaan pemrograman lainnya
yang sejenis. Adapun fungsi-fungsi tersebut adalah sebagai berikut.
Int system (const char *s);
Fungsi ini akan mengirimkan perintah yang disimpan dalam string s ke system operasi tempat
Anda melakukan eksekusi program. Misalnya apabila anda menggunakan system operai Linux
atau Unix dan Anda menuliskan sintak system (“ls – la”), maka sintak tersebut sama seperti kita
menuliskan perintah “ls – la” pada console. Apabila s bernila NULL maka fungsi ini akan
mengembalikan nilai selain nol.
#define digunakan untuk membuat sebuah konstanta nilai di dalam program
12
BAB III
PEMBAHASAN
3.1 Deskripsi Permainan Hangman
Permainan tebak kata ini kami bagi lagi menjadi dua, yaitu permainan versus computer
dan versus manusia. Permainan dengan versus computer, petunjuk dan kata yang akan kita
tebak sudah tersimpan dalam array, jadi program akan menampilkan petunjuk dan kata yang
telah kita simpan secara acak. Sedangkan permainan dengan versus manusia, petunjuk dan
kata dibuat oleh rival atau teman kita sendiri. Petunjuk akan ditampilkan dan kata akan
disimpan dalam program.
Selanjutnya langkah menjadi sama antara versus computer dengan versus manusia. Kata
tersebut akan dirubah dengan bentuk kata sambung “–“ sesuai dengan panjang dari kata yang
akan kita tebak. Langkah selanjutnya adalah menebak kata. Permainan akan berakhir jika kita
menang dalam arti seluruh kata dapat ditebak atau game over dalam arti kita tidak dapat
menebak kata.
3.2 Alur Program Permainan Hangman
Pertama kita mulai dengan memilih menu. Terdapat empat pilihan menu:
Jika anda memilih menu 1
Maka anda langsung memulai memasukan huruf-huruf untuk menebak kata yang
telah tersedia secara acak, apa bila huruf sesuai dengan kata maka anda
memenangkan game, jika anda tidak dapat menabak kata dengan benar anda kalah
dan muncul gambar orang digantung.
Jika anda memilih menu 2
Maka anda disuruh memasukan kata yang ingin di tebak teman anda, beserta dengan
petunjuk untuk menebak kata tersebut, setelah itu suruh teman anda untuk
memasukan huruf-huruf untuk menebak kata yang telah anda buat, , apa bila huruf
sesuai dengan kata maka anda memenangkan game, jika anda tidak dapat menabak
kata dengan benar anda kalah dan muncul gambar orang digantung.
Jika anda memilih menu 3
Maka nanti akan ditampilkan dua pilihan menu lagi tentang cara bermain melawan
computer dan melawan teman anda sendiri, setelah selesai, tekan enter maka anda
akan kembali ke menu awal.
13
Jika anda memilih menu 4
Maka nanti otomatis program akan berhenti.
Jika anda salah memasukan menu (menu>4)
Maka nanti anda akan kembali ke menu awal.
15
BAB IV
KESIMPULAN
Kesimpulan yang kami dapat dalam mempelajari pemrograman bahasa c adalah ternyata di
dalam pembuatan suatu rencana perlu digunakanflowchart,dengan adanya flowchart maka
pekerjaan akan lebih mudah danlebih terorganisir dengan baik dan tepat. Sehingga langkah-
langkah dapat kita ketahui dan dengan mudah dapat membuat program tersebut. Algoritma
dapat memecahkan suatu masalah dan kinerja dari algoritma membuat pekerjaan menjadi
lebih efisien dan mudah.
16
DAFTAR PUSTAKA
Joni, I Made & Raharjo, Budi. 2011. Pemrograman C dan Implementasinya. Bandung. Penerbit
Informatika
Rahmat C, Antonius. 2010. Algoritma dan Pemrograman dengan Bahasa C. Yogyakarta.
Penerbit Andi
17
LAMPIRAN
SOURCE CODE
#include <stdio.h> //prepocessor directive
#include <string.h>
#include <stdlib.h>
#define jumlah_kesalahan_diperbolehkan 7 //deklarasi konstan
void gambar_hangman(int percobaan_salah); //prototype fungsi
void jawab(char kata[],char petunjuk[]);
int main()
{
system("color 0C"); //merubah warna background dan
tulisan
// Variabel
int menu;
char tebakan;
char kata[255],petunjuk[255];
printf("\n");
printf("\tл л лл л л ллллл л л лл л
л\n");
printf("\tл л л л ллл л л л ллл ллл л л ллл
л\n");
printf("\tлллллл лллллл л л л л л ллл л лллллл л л
л\n");
printf("\tл л л л л ллл л лллл л л л л л л
ллл\n");
printf("\tл л л л л л ллллл л л л л л
л\n\n\n");
printf( "\t\t\t\t ллллллл \n");
printf( "\t\t\t\t л л \n");
printf( "\t\t\t\t л @ \n");
printf( "\t\t\t\t л /:\\ \n");
printf( "\t\t\t\t л : \n");
printf( "\t\t\t\t л / \\ \n");
printf( "\t\t\t\t л \n");
printf( "\t\t\t\t ллллллллллл \n");
printf( "\t\t\t\t лллллллллллллл \n");
printf( "\t\t\t\tлллллллллллллллл\n\n");
printf("\t\t\t\t Menu:\n");
printf("\t\t\t 1. Main vs Komputer\n");
printf("\t\t\t 2. Main vs Manusia\n");
printf("\t\t\t 3. Cara Bermain\n");
printf("\t\t\t 4. Keluar\n");
printf("\t\t\t Kamu pilih: ");
scanf("%d",&menu);
system("cls");
if (menu==1)
{
system("color 09");
18
char *list[20] = {
"avocado","mango","grape","apple","orange",
"policeman","sportman","doctor","goalkeeper","teacher",
"table","car","chair","pen","pillow",
"beautiful","angry","humble","fussy","silly",
};
char *list2[20] = {
"fruit","fruit","fruit","fruit","fruit",
"job","job","job","job","job",
"noun","noun","noun","noun","noun",
"adjective","adjective","adjective","adjective","adjective",
};
int katai;
katai = rand() % 20;
char *kata = list[katai];
char *petunjuk = list2[katai];
jawab(kata,petunjuk);
}
else if (menu==2)
{
system("color 0A");
printf( "Masukan Kata yang ingin di tebak.\n");
scanf("%s",&kata );
printf( "berikan kata petunjuk.\n");
scanf("%s",&petunjuk );
jawab( kata, petunjuk);
}
else if (menu==3)
{
int pil;
printf("1. Cara bermain dengan komputer\n");
printf("2. Cara bermain dengan manusia\n\n");
printf("Cara bermain yang kamu mau: ");
scanf("%d",&pil);
if (pil==1)
{
printf("- Lihat kategori\n");
printf("- Tinggal tebak-tebak aja tuh karakter-karakter yang kamu
mau \n");
printf("- sesuain sama kategori ea\n");
}
else if (pil==2)
{
printf("- Masukkan kata yang kamu pengen ditebak ma temenmu\n");
printf("- Masukkan kata petunjuk\n");
printf("- Tekan enter\n");
printf("- Kasi temenmu nebak\n");
printf("- Jalanin deh sampai game / game over\n");
printf("- Gampang kan?\n");
}
printf("selamat mencoba ...");
getche();
system("cls");
return main();
}
19
else if (menu==4)
{
char a[]={"Terimakasih Telah Bermain!\n\nCREATED BY: \t PUTRI
SUARDANI (1208605018)\n\t\t I NYOMAN BUDAYASA (1208605032)\n \t\t I MADE
ADI ARISKA (1208605056)"};
int i;
double j;
for(i=0;i<=140;i++)
{
printf("%c",a[i]);
for(j=0;j<=9990000;j++)
{
}
}
return 0;
}
else
{
printf("pilihan salah, masukkan pilihan kembali\n\n ");
getche();
return main();
}
}
void gambar_hangman( int percobaan_salah ) //fungsi gambar hangman
{
/*
ллл
л &
л O
л /л\
л / \
л
ллл
*/
switch( percobaan_salah )
{
case 1:
{
printf("\n\n");
printf( "\t\t\t\t\tллл \n");
printf( "\t\t\t\t\tл & \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tллл \n");
break;
}
case 2:
{
printf("\n\n");
printf( "\t\t\t\t\tллл \n");
printf( "\t\t\t\t\tл & \n");
printf( "\t\t\t\t\tл O \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
20
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tллл \n");
break;
}
case 3:
{
printf("\n\n");
printf( "\t\t\t\t\tллл \n");
printf( "\t\t\t\t\tл & \n");
printf( "\t\t\t\t\tл O \n");
printf( "\t\t\t\t\tл / \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tллл \n");
break;
}
case 4:
{
printf("\n\n");
printf( "\t\t\t\t\tллл \n");
printf( "\t\t\t\t\tл & \n");
printf( "\t\t\t\t\tл O \n");
printf( "\t\t\t\t\tл /л \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tллл \n");
break;
}
case 5:
{
printf("\n\n");
printf( "\t\t\t\t\tллл \n");
printf( "\t\t\t\t\tл & \n");
printf( "\t\t\t\t\tл O \n");
printf( "\t\t\t\t\tл /л\\\n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tллл \n");
break;
}
case 6:
{
printf("\n\n");
printf( "\t\t\t\t\tллл \n");
printf( "\t\t\t\t\tл & \n");
printf( "\t\t\t\t\tл O \n");
printf( "\t\t\t\t\tл /л\\\n");
printf( "\t\t\t\t\tл / \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tллл \n");
break;
}
case 7:
{
printf("\n\n");
printf( "\t\t\t\t\tллл \n");
printf( "\t\t\t\t\tл & \n");
21
printf( "\t\t\t\t\tл O \n");
printf( "\t\t\t\t\tл /л\\\n");
printf( "\t\t\t\t\tл / \\\n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tллл \n");
break;
}
default:
{
printf("\n\n");
printf( "\t\t\t\t\tллл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tл \n");
printf( "\t\t\t\t\tллл \n");
break;
}
}
}
void jawab( char kata[], char petunjuk[])
{
int banyak_karakter = strlen(kata),
hitung,
percobaan = 0,
banyak_karakter_terlihat = 0,
tebakan_benar = 0,
uji_benar = 0,
uji_perulangan = 0,
menu,
cobalagi;
char tebakan;
char kata_salah[255] = " ";
char kata_terlihat[banyak_karakter]; //menampilkan tebakan benar
for (hitung = 0; hitung<banyak_karakter; hitung++)
kata_terlihat[hitung] = '-';
kata_terlihat[banyak_karakter] = '\0';
system("cls");
printf("petunjuk: %s",petunjuk);;
gambar_hangman(percobaan);
while(percobaan<jumlah_kesalahan_diperbolehkan)
{
printf("\n\n\n");
printf("\t\tлллллллллллллллллллллллллллллллллллллллллллллллл\n\n");
printf("\t\t kata: %s\n", kata_terlihat );
printf( "\t\t Tebakan salah: %s\n", kata_salah );
22
printf( "\t\t Masukan huruf (dan tekan 'Enter'): " );
scanf( " %c", &tebakan );
// mencocokkan tebakan
for (hitung=0; hitung<banyak_karakter; hitung++ )
if (tebakan == kata_terlihat[hitung] || tebakan ==
kata_salah[hitung])
{
uji_perulangan = 1;
uji_benar = 1;
break;
}
if (uji_perulangan == 0) // mengecek kecocokan di string
for (hitung = 0; hitung < banyak_karakter; hitung++ )
{
if( tebakan == kata[hitung] )
{
kata_terlihat[hitung] = tebakan;
tebakan_benar++;
if( tebakan_benar == banyak_karakter )
{
system("cls");
printf("\n\t л л ллл л л л л л л
л л л\n");
printf("\t лллл л л л л л л л л ллл
л л л\n");
printf("\t лл л л л л л ллл л л л л
л л л\n");
printf("\t лл л л л л ллл ллл л л
ллл \n");
printf("\t лл ллл лллл л л л л
л л л\n");
printf( "\n\n\n\n\t\tSelamat and berhasil menebak dengan
benar!\n");
printf( "\t\t\t\tkata: %s\n\n\n\n", kata_terlihat );
printf("\n\n\n\ncoba lagi?(1/0)\n");
scanf("%d",&cobalagi);
if (cobalagi == 1)
{
system("cls");
return main();
}
else
{
exit (0);
}
}
uji_benar = 1;
}
}
if( uji_benar == 0 )
{
kata_salah[percobaan] = tebakan;
percobaan++;
23
}
// mereset persyaratan
uji_perulangan = 0;
uji_benar = 0;
system("cls");
printf("petunjuk: %s",petunjuk);;
gambar_hangman(percobaan);
}
system("cls");
printf("\t\t\t ллллл лл л л лллл \n");
printf("\t\t\tлл л л л ллл ллл л \n");
printf("\t\t\tлл лллллл л ллл л ллл \n");
printf("\t\t\tлл лллл л л л л л л \n");
printf("\t\t\t ллллл л л л л лллл \n\n\n");
printf("\t\t\t ллл л л лллл ллл л \n");
printf("\t\t\tл л л л л л лл л \n");
printf("\t\t\tл л л л ллл ллл л \n");
printf("\t\t\tл л ллл л л лл \n");
printf("\t\t\t ллл л лллл л л л \n\n\n\n\n");
printf("\n\nKamu tidak berhasil menebak kata");
printf("\nkata: %s\n", kata );
printf("\ncoba lagi?(1/0)");
scanf("%d",&cobalagi);
if (cobalagi == 1)
{
system("cls");
return main();
}
else
{
return 0;
}
}