Pages

#include //header yang dipakai pada program ini
#include
#include
#include
#include

struct data
{
char nama[20];
float selisih;
};
typedef struct data data;

data pemain;
int a[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; //mendefinisikan array
int b[4][4]={{1,1,2,2},{3,3,4,4},{5,5,6,6},{7,7,8,8}};
int baris1,kolom1,baris2,kolom2,x;

void end(), rumus();
int cek(int i[4][4]);
char pil;
time_t waktu_awal;
time_t waktu_akhir; //mendeklarasikan fungsi cek
FILE *f_struktur;
void pilihan();
void mulai ();
void nama ();
void jumlah ();

void pilihan()
{
clrscr();
int choice;
printf(" ********** MENU UTAMA ********** ");
printf("\n\n1. Masukkan Identitas");
printf("\n2. Mulai Permainan");
printf("\n3. Lihat Nilai Permainan");
printf("\n4. Keluar");
printf("\n\nMasukkan Pilihan Anda : "); scanf("%d",&choice);
switch(choice){
case 1 : clrscr(); nama(); break;
case 2 : if(strcmp(pemain.nama, "\0")!=0){
clrscr();
waktu_awal=time(NULL);//memulai penghitungan awal di 0 detik
mulai();
}
else{
printf("\nMaaf!\nMasukan identitas Anda terlebih dahulu");
getch();
pilihan (); break;
}
case 3 :
jumlah();

case 4 : exit(1);
default : printf("Menu yang anda masukkan tidak tersedia\n");
printf("Silahkan ketik 'ENTER' untuk kembali ke menu utama..");
getch();
pilihan();
break;
}
}

void tampilan() //membuat fungsi tampilan
{
printf ("---------------------------------------------------------------------- ");
printf ("\n\t\t\tPERMAINAN TEBAK ANGKA\n"); //membuat judul
printf ("---------------------------------------------------------------------- ");

printf("\n*********************************");
printf("\n* * * * *");
printf("\n* %d * %d * %d * %d *",a[0][0],a[0][1],a[0][2],a[0][3]); //pemanggilan array
printf("\n* * * * *");
printf("\n*********************************");
printf("\n* * * * *");
printf("\n* %d * %d * %d * %d *",a[1][0],a[1][1],a[1][2],a[1][3]);
printf("\n* * * * *");
printf("\n*********************************");
printf("\n* * * * *");
printf("\n* %d * %d * %d * %d *",a[2][0],a[2][1],a[2][2],a[2][3]);
printf("\n* * * * *");
printf("\n*********************************");
printf("\n* * * * *");
printf("\n* %d * %d * %d * %d *",a[3][0],a[3][1],a[3][2],a[3][3]);
printf("\n* * * * *");
printf("\n*********************************");
}

void balik() //membuat fungsi balik
{
for(int r=0; r<=3; r++)
for(int n=0; n<=3; n++)
a[r][n]=0; //mengembalikan nilai awal ke 0
}

void nama() //membuat fungsi nama
{ system ("cls");
printf("Informasi Permainan : \n");
printf("===================\n\n");
printf("Nama Pemain : "); //memasukkan nama pemain dengan struct
gets(pemain.nama) ;
pilihan();
}

void mulai() //membuat fungsi mulai
{ tampilan(); //memanggil fungsi tampilan
end(); //memanggil fungsi end
printf("\n\nMasukkan baris dan kolom tebak angka 1\n");
printf ("Baris : "); scanf("%d",&baris1);
printf ("Kolom : "); scanf("%d",&kolom1);
x=a[baris1-1][kolom1-1]; //menyimpan nilai sementara agar tdk langsung kembali ke 0
a[baris1-1][kolom1-1]=b[baris1-1][kolom1-1]; //mengganti nilai awal a dengan b
clrscr(); //membersihkan layar
tampilan(); //memanggil fungsi tampilan
printf("\n\nMasukkan baris dan kolom tebak angka 2\n");
printf ("Baris : "); scanf("%d",&baris2);
printf ("Kolom : "); scanf("%d",&kolom2);
rumus(); //memanggil fungsi rumus
}
void end() //membuat fungsi end
{
if(cek(a)==1)
{
waktu_akhir = time(NULL); //menghitung waktu permainan
pemain.selisih = difftime(waktu_akhir,waktu_awal);
printf("\n\nPermainan selesai...\n");
printf("Apakah anda ingin bermain lagi ? ");
getchar();
char pilih;
scanf("%c",&pilih);
if(pilih == 'y')
{ if((f_struktur=fopen("nilai.txt","a"))==NULL)
cputs("Proses Error..!!");
fprintf(f_struktur,"\nNama :%s",pemain.nama);
fprintf(f_struktur,"\nWaktu\t:%1.2f detik\n",pemain.selisih);
fclose(f_struktur);
balik();
mulai();
}
else {
if((f_struktur=fopen("nilai.txt","a"))==NULL)
cputs("Proses Error..!!");
fprintf(f_struktur,"\nNama :%s",pemain.nama);
fprintf(f_struktur,"\nWaktu\t:%1.2f detik",pemain.selisih);
fclose(f_struktur);
pilihan();
} }
}

void rumus() //deklarasi fungsi rumus
{
if(baris1==baris2 && baris1<5 && baris2<5)
if((kolom1==1 && kolom2==2)||(kolom1==2 && kolom2==1)||(kolom1==3 && kolom2==4)||(kolom1==4 && kolom2==3))
{
a[baris1-1][kolom1-1]=b[baris1-1][kolom1-1];
a[baris2-1][kolom2-1]=b[baris2-1][kolom2-1];
clrscr(); //membersihkan layar
mulai(); //memanggil fungsi mulai
}
else //akan dijalankan jika barisnya sama tp kolom tdk urut
{
if(x!=0)
a[baris1-1][kolom1-1]=x;
else
a[baris1-1][kolom1-1]=0;
clrscr(); //membersihkan layar
mulai(); //memanggil fungsi mulai
}
else //akan dijalankan jika barisnya tdk sama dan kolom tdk urut
{
if(x!=0)
a[baris1-1][kolom1-1]=x;
else
a[baris1-1][kolom1-1]=0;
clrscr(); //membersihkan layar
mulai(); //memanggil fungsi mulai
}
}

int cek(int a[4][4]) //membuat fungsi cek kemenangan
{
int hasil=1;
for(int r=0;r<=3;r++)
for(int n=0;n<=3;n++)
{
hasil=hasil*a[r][n];
}
if(hasil==0)
return(0);
else
return(1);
}

void jumlah()
{
system("cls");
f_struktur=fopen("nilai.txt","r");
while(pemain.nama != NULL)
puts(fgets(pemain.nama,sizeof(pemain.nama),f_struktur));
fclose(f_struktur);
getch();
pilihan();
}
void main() //Program Utama
{
clrscr(); //memanggil fungsi nama
pilihan(); //memanggil fungsi mulai
}

0 komentar:

Posting Komentar