hangman 1

42
PERMAINAN TEBAK KATA HANGMAN Luh Gede Putri Suardani 1208605018 I Nyoman Budayasa 1208605032 I Made Adi Ariska Liana Putra 1208605056

Upload: putri-suardani

Post on 28-Apr-2015

224 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Hangman 1

PERMAINAN TEBAK KATA

HANGMAN

Luh Gede Putri Suardani 1208605018

I Nyoman Budayasa 1208605032

I Made Adi Ariska Liana Putra 1208605056

PROGRAM STUDI TEKNIK INFORMATIKA

JURUSAN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS UDAYANA

2012

Page 2: Hangman 1

KATA PENGANTAR

Puji syukur kami panjatkan kepada Tuhan yang Maha Esa, karena atas rahmatNya lah

kegiatan penulisan laporan ini dapat terselesaikan.Laporan ini merupakan sebagai tugas akhir

dari mata kuliah Algoritma dan Pemrograman.

Dalam penulisan laporan ini kami masih banyak memiliki kekurangan dan kesalahan

dalam penulisan ataupun dalam pengkodingan. Untuk itu kami mengharapkan saran dan kritik

untuk lebih menyempurnakan laporan ini. Dalam pelaksanaan penulisan laporan, kami banyak

mendapat bantuan, bimbingan dan saran dari berbagai pihak, untuk itu penulis menyampaikan

terimakasih kepada rekan - rekan yang telah memberi sumbangan pikiran, semangat dan banyak

membantu demi kesempurnaan program ini.

Semoga Tuhan membalas amal kebaikan mereka semua dan makalah ini dapat

memberikan manfaat bagi para pembaca.

Badung, 19 Desember 2012

Penulis

2

Page 3: Hangman 1

DAFTAR ISI

KATA PENGANTAR.....................................................................................................................2

DAFTAR ISI...................................................................................................................................3

BAB I...............................................................................................................................................5

PENDAHULUAN...........................................................................................................................5

2.1 Latar Belakang..................................................................................................................5

2.2 Rumusan Masalah.............................................................................................................5

2.3 Tujuan...............................................................................................................................5

BAB II.............................................................................................................................................6

LANDASAN TEORI.......................................................................................................................6

2.1 Pengenalan Bahasa C.............................................................................................................6

a. Baris Komentar.................................................................................................................6

b. Struktur Bahasa C.............................................................................................................6

c. Judul Program...................................................................................................................6

d. Variabel.............................................................................................................................7

e. Konstanta..........................................................................................................................7

f. Fungsi main()....................................................................................................................7

g. Fungsi printf()...................................................................................................................7

h. Fungsi scanf()...................................................................................................................8

2.2 Pemilihan Kondisi.............................................................................................................8

a. STRUKTUR KONDISI “IF….”.......................................................................................8

b. STRUKTUR KONDISI “IF…...ELSE……”...................................................................8

c. STRUKTUR KONDISI “SWITCH…CASE….DEFAULT…”......................................8

2.3 Perulangan.............................................................................................................................8

a. STRUKTUR PENRULANGAN “WHILE”.....................................................................9

3

Page 4: Hangman 1

b. STRUKTUR PERULANGAN “DO…..WHILE….”.......................................................9

c. STRUKTUR PERULANGAN “FOR”.............................................................................9

2.4 Fungsi................................................................................................................................9

a. Pengertian Fungsi.............................................................................................................9

b. Beberapa Fungsi Pustaka pada Bahasa Pemrograman C..................................................9

c. Membuat Fungsi Sendiri.................................................................................................12

2.5 Statemen Peloncatan.......................................................................................................12

2.6 Jenis-jenis Header...........................................................................................................13

BAB III..........................................................................................................................................16

PEMBAHASAN............................................................................................................................16

3.1 Deskripsi Permainan Hangman.......................................................................................16

3.2 Alur Program Permainan Hangman................................................................................16

FLOWCHART..............................................................................................................................18

BAB IV..........................................................................................................................................19

KESIMPULAN..............................................................................................................................19

LAMPIRAN..................................................................................................................................21

SOURCE CODE........................................................................................................................21

SCREENSHOT..........................................................................................................................28

4

Page 5: Hangman 1

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.

5

Page 6: Hangman 1

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.

6

Page 7: Hangman 1

Deklarasi

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

7

Page 8: Hangman 1

umum dari fungsi ini :printf(”string kontrol”, argumen1, argumen2, ....);String kontrol

yang akan ditampilkan, dapat berupa variabel, konstanta, maupun ungkapan.

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.

8

Page 9: Hangman 1

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.

9

Page 10: Hangman 1

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()

10

Page 11: Hangman 1

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);

11

Page 12: Hangman 1

♦ 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

12

Page 13: Hangman 1

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

13

Page 14: Hangman 1

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

14

Page 15: Hangman 1

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

15

Page 16: Hangman 1

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.

16

Page 17: Hangman 1

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.

17

Page 18: Hangman 1

FLOWCHART

18

Page 19: Hangman 1

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.

19

Page 20: Hangman 1

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

20

Page 21: Hangman 1

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 fungsivoid 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");

21

Page 22: Hangman 1

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(); }

22

Page 23: Hangman 1

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");

23

Page 24: Hangman 1

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");

24

Page 25: Hangman 1

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 );

25

Page 26: Hangman 1

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++;

26

Page 27: Hangman 1

}

// 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; }}

27

Page 28: Hangman 1

SCREENSHOT

28

Page 29: Hangman 1

29

Page 30: Hangman 1

30

Page 31: Hangman 1

31

Page 32: Hangman 1

32

Page 33: Hangman 1

33

Page 34: Hangman 1

34