Geçen gün daha önce bir arkadaşımdan öğrendiğim sayı tahmin adlı mantık
oyununu oynamak istedim ama kimseyi bulamadım. Bende bu oyunu
bilgisayarda kodlayarak bana asla hayır diyemeyecek bir rakip elde
ettim.
Bilgisayar 4 basamakli rakamlari farkli bir sayi tutuyor. Siz bu sayiyi
bilgisayarin verdiği ipuçlarından yararlanarak bilmeye çalışıyorsunuz.
Mesela +2 -1 derse 3 rakami bildiniz ama bunlardan 2 si doğru yerde 1 i
yanlış yerde anlamında...Kolay gelsin
Not 1:Oyun çok kısa sürede kodlandığı için içinde daha iyi bir mantık
kurulabileceği ve düzenlemelerin yapılabileceği kısımlar olabilir.
Gerekiyorsa onarılmasını size bıraktım. Mesela Yazıları, menüleri
renklendirebilirsiniz. Daha iyi bir mantık geliştirebilirsiniz...
Not 2:Puanı tabloya ekleyen fonksiyonu yazmadım.Onu da size bıraktım.
Not 3:İyi eğlenceler...
Eleştiri+Öneri> Okan ÇEtin okancet@yahoo.com
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NULL -1
int tercih_oku(void), sayi_kontrol(int a), karsilastir(int *b, int a);
int puan_hesapla(int i), tabloya_ekle(int puan);
void puan_durumu(void),yeni_oyun(void),kural_oku(void);
main()
{
int secim;
for(;;){
secim=tercih_oku();
switch(secim){
case 1:
yeni_oyun();
break;
case 2:
puan_durumu();
break;
case 3:
kural_oku();
break;
case 4:
exit(0);
}
}
}
//Menüyü ekrana basar. Tercihi okur...
int tercih_oku(void)
{
register int a;
do{
puts("\n\n\t\t***** MENU *****\n\n");
puts("1. Yeni Oyun\n");
puts("2. Puan Durumu\n");
puts("3. Nasil Oynanir?\n");
puts("4. Cikis\n\n");
puts(" Tercihinizi Giriniz::\n");
scanf("%d",&a);
}while(a<1 || a>4);
return a;
}
//Oyuncunun Puanini Hesaplar...
int puan_hesapla(int a)
{
float puan;
puan=10000/a;
return puan;
}
//Puan Durumu Tablosunu Ekrana Basar..
void puan_durumu(void)
{
FILE *di;
char *str;
//puan.txt gibi bir dosya aç burada..
puts("Puan durumunun saklandigi dosya bulunamadi.\n");
exit(1);
while(!feof(di)){
fgets(str,255,di);
printf("%s",str);
}
}
// Nasil oynandigini ekrana basar...
void kural_oku(void)
{
FILE *di;
char *str;
//nasil oynandigini anlatan bir txt dosyası hazırla ve burda ac
puts("Nasil oynanirin saklandigi dosya bulunamadi.\n");
exit(0);
while(!feof(di)){
fgets(str,255,di);
printf("%s",str);
}
}
// Yeni Oyun icinde kullanildi. Kullanicinin girdigi sayiyi kontrol
eder.
int sayi_kontrol(int a)
{
int S[4],i,k;
S[3]=a/1000;
S[2]=(a/100)-(S[3]*10);
S[1]=(a/10)-((S[3]*100)+(S[2]*10));
S[0]=a%10;
for(i=0;i<4;i++){
for(k=0;k<4;k++){
if(S==S && i!=k)
return 1;
}
}
return 0;
}
//Kullanici Tahmini ile Bilgisayarin sayisini karsilastirir...
int karsilastir(int D[4], int a)
{
int S[4],i,k,ipucu1,ipucu2;
ipucu1=0;
ipucu2=0;
S[3]=a/1000;
S[2]=(a/100)-(S[3]*10);
S[1]=(a/10)-((S[3]*100)+(S[2]*10));
S[0]=a%10;
for(i=0;i<4;i++){
for(k=0;k<4;k++){
if(D==S && i==k)
ipucu1++;
if(D==S && i!=k)
ipucu2++;
}
}
if(ipucu1==4){
puts("Tebrikler Sayiyi Bildiniz...");
return 1;
}
printf("%+d\t-%d",ipucu1,ipucu2);
return 0;
}
// Yeni Oyun Acar...
void yeni_oyun(void)
{
register int i,k,n=0,s,puan=0;
int A[4];
int Secim[10]={0,1,2,3,4,5,6,7,8,9};
randomize();
for(k=0;k<4;k++){
n=rand()%10;
if(Secim[n]!=-1){
A=Secim[n];
Secim[n]=-1;
}
else k--;
}
for(i=0;i<10;i++){
puts("\nTahminizi Giriniz:\n");
scanf("%d",&s);
if(s>9876){
puts("Girdigin Sayi Hatali\n");
puts("Dikkat Et.\n");
continue;
}
if (sayi_kontrol(s)){
puts("Girdiginiz Sayi hatali\n");
puts("Hata: Rakamlari farkli olmali\n");
continue;
}
if (karsilastir(A,s))
break;
}
if(i==10)
puan=0;
else
puan=puan_hesapla(i);
printf("\nPuaniniz: %d\n",puan);
printf("Iste tuttugum sayi : %d%d%d%d\n",A[3],A[2],A[1],A[0]);
puts("Puaniniz tabloya eklendi.\n");
puts("iste tablodaki yeriniz:\n");
puan_durumu();
}