Kamis, 26 November 2009

Tugas Game

PUZZLE ANGKA
Game ini dipilih sebagai game yang dianggap bisa mengasah otak, dapat dimainkan oleh siapa saja, simpel/sederhana, tidak hilang oleh zaman, dan dapat dibuat dengan berbagai bahasa pemrograman, mulai dari bahasa pemrograman sederhana hingga bahasa pemrograman berbasis object.
Tujuan permainan : mengurutkan 15 angka dalam 16 kotak yang tersedia seperti matriks 4 x 4, dimana satu kotak dijadikan sebagai kotak pertukaran .
  • Aturan main
• Terdiri dari 15 angka dalam 16 kotak (4 x 4)
• Angka awal masih teracak, permainan terdiri dari 3 tingkat kesulitan ;
1. Easy
2. Medium
3. Hard
• Game ini memiliki ketentuan yang lebih spesifik lagi, misalnya ; waktu .
  • Cara memainkannya :
• Susun atau urutkan angka-angka dalam 16 kotak tersebut
• Pengurutan angka disusun ke samping kanan
• Untuk memindahkan/menukar angka tersebut, gunakan panah pada keyboard (hanya bisa ke kiri-kanan dan atas-bawah)
• Permainan berakhir ketika semua angka terurut dan kotak penukar berada di pojok kanan bawah

  • Algoritma permainan :
Lihat angka yang disediakan sesuai tingkat kesulitan permainanv
Urutkan angka-angka tersebutv
Geser angka tersebut dengan kotak penukar sampai angka-angka tersebut terurut dan kotak penukar berada di pojok kanan bawah, dan .. horeeee menangg !!!!!!!!!!!!!!!!!!!!!!!v


  • BEST CASE
a. Urutkan empat angka terdepan dimana empat angka tersebut terurut
b. Kemudian tempatkan empat angka terdepan tersebut pada tempatnya dengan menggeser satu-persatu
c. Ulangi langkah tersebut untuk angka selanjutnya


  • BATASAN
Yang menjadi batasan pertama dalam permainan ini, apabila kotak kosong yang menjadi penukar berada di tepi kotak, maka kotak kosong tersebut tidak bisa berpindah ke tepi seberangnya .
Kedua, kotak penukar hanya bisa bergeser satu kotak (tidak mungkin lebih dari satu kotak)


  • Kesimpulannya :
Manusia lebih bisa mengingat sesuatu dalam bentuk gambar dan warna, jadi alangkah baiknya bila permainan tersebut ditampilkan dalam perpaduan warna dan gambar yang lebih menarik, agar permainan tersebut tidak membosankan . Bisa juga ditampilkan dalam bahasa pemrograman Visual Basic dan Visual Prolog . Dan agar lebih menantang pemain, diberikan limit waktu untuk menyelesaikan permainan ini .
Dan yang menjadi kekurangan dalam game ini adalah tidak adanya score yang dimuat pada permainan ini, jadi game ini bisa disebut game sederhana, masih ada penyempurnaan dari game ini.

LISTING PROGRAM


/*
* File : puzzle.c
*/


#include
#include
#include


#define atas 1
#define kiri 2
#define bawah 3
#define kanan 4


#define keyUp 0x048
#define keyDown 0x050
#define keyLeft 0x04b
#define keyRight 0x04d


#define true 1
#define false 0


#define easy 10
#define medium 20
#define hard 30


#define caption " ----------------\n// GAME PUZZLE //\n----------------\n"


#define fieldSize 4


char field[fieldSize][fieldSize];
char field2[fieldSize][fieldSize];
unsigned int seed;
int x, y;


int acak(int i);
void initField(int movement);
void move(int arah);
void generateOutput();
int cekUrut();


int acak(int i) {
int a;
seed += 5;
srand(seed);


a = (rand() % i) + 1;


return(a);
}


void initField(int movement) {
int arah, arahOld = -1, nPindah = movement, xOld, yOld;
int c = 1, i, j;
char temp;


srand(time(NULL));
seed = rand();
x = y = (fieldSize - 1);


for (i = 0; i <= (fieldSize - 1); i++) {
for (j = 0; j <= (fieldSize - 1); j++) {
field[i][j] = field2[i][j] = c;
c++;
}
}
field[fieldSize - 1][fieldSize - 1] = field2[fieldSize - 1][fieldSize - 1] = ' ';


c = 0;
while (c != nPindah) {
xOld = x;
yOld = y;
arah = acak(4);


if (arah != 0) {
if ( c != 0) {
if ((arah + 2) % 4 == arahOld) {
continue;
}
}


switch (arah) {
case atas :
if (y > 0) y--;
else continue;
break;
case kiri:


if (x > 0) x--;
else continue;
break;
case kanan :
if (x < fieldSize - 1) x++;
else continue;
break;
case bawah :
if (y < fieldSize - 1) y++;
else continue;
break;
default :
break;
}


if (x >= 0 && y >= 0 && x <= (fieldSize - 1) && y <= (fieldSize - 1)) {
temp = field[y][x];
field[y][x] = field[yOld][xOld];
field[yOld][xOld] = temp;


c++;
arahOld = arah % 4;
} else {
x = xOld;
y = yOld;
}
}
}
}


void move(int arah) {
int xOld, yOld;
char temp;


xOld = x;
yOld = y;


switch (arah) {
case atas :
if (y > 0) y--;
break;
case kiri:
if (x > 0) x--;
break;
case kanan :
if (x < (fieldSize - 1)) x++;
break;
case bawah :
if (y < (fieldSize - 1)) y++;
break;
default :
break;
}


if (x >= 0 && y >= 0 && x <= (fieldSize - 1) && y <= (fieldSize - 1)) {
temp = field[y][x];
field[y][x] = field[yOld][xOld];
field[yOld][xOld] = temp;




} else {
x = xOld;
y = yOld;
}
generateOutput();
}


void generateOutput() {
int i, j, k;
clrscr();
puts(caption);
puts("Tekan ESC untuk keluar / reset permainan...");
for(k = 1; k <= fieldSize; k++) printf("+----"); puts("+");


for (i = 0; i<=(fieldSize - 1); i++) {
for (j= 0; j<=(fieldSize - 1); j++) {
if (i == y && j == x) {
printf("| %c ", field[i][j]);
} else {
printf("| %2i ", field[i][j]);
}
}
puts("|");


for(k = 1; k <= fieldSize; k++) printf("+----"); puts("+");
}
}


int cekUrut() {
int c, d;
int match = true;


for (c = 0; c <= (fieldSize - 1); c++) {
for (d = 0; d <= (fieldSize - 1); d++) {
if (field[c][d] != field2[c][d]) {
if (match == true) {
match = false;
}
}
}
}
return(match);
}


main() {
int i, j, k, level;
char key;


system("cls");
puts(caption);
puts("Mainkan puzzle dan menyusunnya menjadi urutan yang benar...");
puts("Geser kotak kosong sehingga menjadi berurutan sbg berikut : \n");
initField(0);






for(k = 1; k <= fieldSize; k++) printf("+----"); puts("+");
for (i = 0; i<=(fieldSize - 1); i++) {
for (j= 0; j<=(fieldSize - 1); j++) {
if (i == y && j == x) {
printf("| %c ", field2[i][j]);
} else {
printf("| %2i ", field2[i][j]);
}
}
puts("|");


for(k = 1; k <= fieldSize; k++) printf("+----"); puts("+");
}
puts("Gunakan tombol panah untuk menggeser kotak kosong...\n");
puts("Tekan sembarang tombol untuk melanjutkan...");
getch();
for(;;) {
system("cls");
puts("Level : ");
puts("\t1. Easy");
puts("\t2. Medium");
puts("\t3. Hard");
printf("Pilih Level yang akan dimainkan : ");
scanf("%i", &level);


switch (level) {
case 1 :
initField(easy);
break;
case 2 :
initField(medium);
break;
case 3 :
initField(hard);
break;
default :
puts("Level salah!!");
getch();
continue;
}


system("cls");


generateOutput();


while ((key = getch()) != 27) {
switch(key) {
case keyUp :
move(atas);
break;
case keyDown :
move(bawah);
break;
case keyLeft :
move(kiri);
break;
case keyRight :
move(kanan);
break;
}
if (cekUrut() == true) {
puts("\nANDA MENANG!!!");




break;
}
}
if (key == 27) {
printf("Apakah anda ingin keluar ?\n['y' utk keluar / 't' utk reset] : ");
if (toupper(getchar()) == 'Y') break;
else continue;
} else {
printf("Apakah anda ingin main lagi ? [y/t] : ");
if (toupper(getchar()) == 'T') {
puts("\nTerima Kasih Telah Mencoba!!!");
getch();
break;
}
else continue;
}
}
}
TAMPILAN OUTPUT


Kamis, 05 November 2009

sebaik2 amal ibadah itu adalah:


Hikmah sholat tahajud?
terlepas semua ikatannya.
Pada akhirnya, dia akan menjadi segar dengan jiwa yang bersih.

Jika tidak, dia akan bangun dengan jiwa yang kotor yang diliputi rasa malas."
(HR Bukhari).

Keempat, mempercepat tercapainya cita-cita dan rasa aman.
"Ketahuilah sesungguhnya Allah tertawa terhadap dua orang laki laki: Seseorang yang bangun pada malam yang dingin dari ranjang dan selimutnya, lalu ia berwudhu dan melakukan shalat.

Allah SWT berfirman kepada para MalaikatNya,
"Apa yang mendorong hambaKu melakukan ini?"

Oleh Imam Nur Suharno Di antara ibadah sunah yang tidak pernah ditinggalkan oleh Rasulullah SAW adalah shalat malam (Tahajud).

Rasulullah mengerjakannya hingga kedua telapak kaki beliau bengkak-bengkak.

Tahajud merupakan ibadah yang disyariatkan sebagai rahmat, tambahan kebaikan, dan keutamaan
(QS Al-Muzzammil [73]:1-4).

Shalat Tahajud menjadi jalan hidup dan amalan rutin bagi orang orang saleh (HR Tirmidzi);

orang orang besar (takwa)
(QS AdzDzariyat [51]: 17-18); 'Ibadurrahman (QS Al-Furqan [25]:'Ibadurrahman (QS Al-Furqan [25]:64);

menjadi salah satu ciri orang-orang yang memiliki kesempurnaan iman
(QS As-Sajdah [32]: 16-17).

Selain menjadi sumber energi keimanan, shalat Tahajud memiliki banyak manfaat yang dapat dirasa kan secara langsung oleh orang orang yang melaksanakannya.Pertama, menjaga kesehatan.

Sabda Nabi SAW, "Lakukanlah shalat malam karena itu adalah tradisi orang-orang saleh sebelum kalian, sarana mendekatkan diri kepada Allah, pencegah dari per buatan dosa, penghapus kesalahan, dan pencegah segala penyakit dari tubuh.

Kedua, merawat ketampanan atau kecantikan.
"Barang siapa yang banyak menunaikan shalat malam, maka wajahnya akan terlihat tampan/cantik di siang hari."
(HR Ibnu Majah).Ketiga, meningkatkan produktivitas kerja.

"syaitan (Setan) membuat ikatan pada tengkuk salah seorang di antara kalian ketika tidur dengan tiga ikatan dan setiap kali memasang ikatan dia berkata: `
"Malam masih panjang, maka tidurlah.'

Jika orang tadi bangun lalu berzikir kepada Allah SWT, maka terlepas kepada Allah SWT, maka terlepas satu ikatan, jika dia berwudhu, maka terlepas satu ikatan yang lainnya, dan jika dia melaksanakan shalat, maka terlepas semua ikatannya.

Pada akhirnya, dia akan menjadi segar dengan jiwa yang bersih. Jika tidak, dia akan bangun dengan jiwa yang kotor yang diliputi rasa malas."
(HR Bukhari).

Keempat, mempercepat tercapainya cita-cita dan rasa aman.
"Ketahuilah sesungguhnya Allah tertawa terhadap dua orang laki-laki: Seseorang yang bangun pada malam yang dingin dari ranjang dan selimutnya, lalu ia berwudhu dan melakukan ia berwudhu dan melakukan shalat. Allah SWT berfirman kepada para MalaikatNya, "Apa yang mendorong hambaKu melakukan ini?"

Mereka menjawab,
"Wahai Rabb kami, ia melakukan ini karena mengharap apa yang ada di sisi-Mu."

Allah berfirman, "Sesungguhnya Aku telah memberikan kepadanya apa yang ia harapkan (cita-citakan) dan memberikan rasa aman dari apa yang ia takutkan."
(HR Ahmad).

Kelima, melembutkan hati yang keras. Dari Abu Hanifah,
"Saya tidak lebih dari satu ayat yang saya baca ketika melakukan shalat malam." Satu ayat tersebut dibaca berulang-ulang semalam suntuk, "Sesungguhnya hari kiamat itulah hari yang dijanjikan kepada mereka dan kiamat itu lebih dahsyat dan lebih pahit."
(QS Al-Qamar [54]: 46).

Karena itu, bersegeralah untuk menunaikan shalat Tahajud dan raih manfaatnya (balasannya)
(QS As-Sajdah [32]: 17).

Wallahu a'lam.
 

enno's world Template by Ipietoon Cute Blog Design