C'de Adam Asmaca Oyunu

saika

MB Üyesi
Kayıt
2 Eylül 2015
Mesajlar
5
Tepkiler
1
Üniv
İstanbul Medipol Üniversitesi
Arkadaşlar cuma akşamına kadar yazmam gereken bir adam asmaca oyunu var. Oyunda üç kelime yer alacak kelimeler random seçilecek. Yanlış girilen harfler her seferinde gösterilecek ve yanlış bilme hakkı 5 olacak. C programlamaya giriş dersi ödevi. Şunları kullan şöyle başla devamı gelir gibi her türlü yardıma ihtiyacım var. Şimdiden teşekkür ederim.
 

Dosyalar

Atakan Akbulut

Yetkili Kişi
Moderatör
Kayıt
28 Nisan 2016
Mesajlar
142
Tepkiler
42
Meslek
R&D Embedded Systems Software Engineer
Arkadaşlar cuma akşamına kadar yazmam gereken bir adam asmaca oyunu var. Oyunda üç kelime yer alacak kelimeler random seçilecek. Yanlış girilen harfler her seferinde gösterilecek ve yanlış bilme hakkı 5 olacak. C programlamaya giriş dersi ödevi. Şunları kullan şöyle başla devamı gelir gibi her türlü yardıma ihtiyacım var. Şimdiden teşekkür ederim.
Öncelikle kocaman fonksiyon ve kocaman bir for döngüsü düşün . bu for döngüsünün içine tercihine göre dosya okuma yazma komutlarıyla .txt dosyalarındaki bir karakterleri string döngüsüne atasın.Ne oldu n rakamlı dizimiz oldu degil mi

a= int length(char s[]) ile txt dosyasında kaç karakter oldugunu okuyabiliriz.
sonra büyük for döngümüzün kaça gidecegini a ya eşitlersin. Ne oldu ? n karakterli bir for döngüsü. önerim n+ hata yapma sayısıdır.

sonra bu for döngüsünün içinde kendi halinde 1 adet for 2 adet if döngüsü düşünelim
for döngüsünün kaç basamaklı oldugunun önemi yok .for komutunda bir giris isteyelim scan f ile herhangibi bir şeye atasın buda x olsun
if(eger) (s[a]==girilen sayi) {printf("%d . sayimiz %d"a,x)} olsun

hata sayimiz için bir int tanımlarız. int error=0;
hemen altına else yazıp parantez açıp {error=error+1 printf("%d hataniz tekrar rakam giriniz",error)}
yaparsınız.ayrıca bu satırın hemen altına if(error>=4); break ; komutu ile 3 hatada döngülerden çıkabilir ve 4. hatada programı kapatabilirsiniz.

kolay gelsin . iyi geceler :)
 
Konu sahibi
Konu sahibi
saika

saika

MB Üyesi
Kayıt
2 Eylül 2015
Mesajlar
5
Tepkiler
1
Üniv
İstanbul Medipol Üniversitesi
Cevabınız için çok teşekkür ederim. Ancak programlama konusunda oldukça yetersizim. Bu ödev sayesinde bir şeyler öğrenmeye çalışıyorum. Youtube yardımıyla aşağıdaki gibi bir kod yazabildim. Fakat hâlâ istediğim programı elde edemedim. Program çalışıyor ama doğru harfi girdikçe kelimenin içinde yer almıyor o harf. Bir de girilen tüm harfleri hafızada tutup outputta göstermem gerekiyor. Ne eklemeliyim nasıl yapmalıyım tam olarak bulamadım. Tekrardan teşekkür ederim.


Kod:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main () {
srand (time (NULL));
char words [] [20] = {
"LABORATORY",
"COMPUTER",
"PROGRAMMING"
};
int randomIndex =rand () & 3 ;
int numLives = 5;
int numCorrect= 0;
int oldCorrect = 0;
int lengthOfWord = strlen ( words [randomIndex]);

// c o m p u t e r
int letterGuessed [15] = {0,0,0,0,0,0,0,0,0,0,0};
int quit= 0;
int i = 0;
char guess [20] ;
char letterEntered ;
//game loop
while ( numCorrect< lengthOfWord ){
printf ("\n\nNEw turn..\nHangman Word: ");
for (i =0 ; i < lengthOfWord ; i++ ){
if (letterGuessed == 1 ) {
printf ("%c",words [randomIndex] );
}else {
printf ("-");
}
} // first for loop
printf ("\n");
printf ("Number correct so far : %d : \n",numCorrect);
printf ("Enter a guess letter : ");
fgets ( guess , 20, stdin );
if (strncmp (guess, "quit" , 4 )== 0 ){
quit =1;
break;
}
letterEntered = guess [0];
printf ("letterEntered : %c",letterEntered );
oldCorrect=numCorrect;
for (i =0 ; i < lengthOfWord ; i++ ){
if (letterGuessed == 1 ) {
continue ;
}
if (letterEntered == words [randomIndex] ){
letterGuessed = 1;
numCorrect++;
} // second if loop
} // first for loop
if (oldCorrect == numCorrect ){
numLives--;
printf ("Sorry, wrong guess \n");
if (numLives==0){
break;
}
}
else{
printf ("Great, correct guess \n");
}
} // end of the while loop
if (quit == 1 ){
printf ("\nthe user quit early\n");
} else if (numLives==0) {
printf ("\nSorry, GAME OVER. The word was %s \n",words [randomIndex]);
}
else {
printf ("\nYOU WIN :) \n ");
}
return 0;
}
 
Son düzenleme yönetici tarafından yapıldı:

Atakan Akbulut

Yetkili Kişi
Moderatör
Kayıt
28 Nisan 2016
Mesajlar
142
Tepkiler
42
Meslek
R&D Embedded Systems Software Engineer
Cevabınız için çok teşekkür ederim. Ancak programlama konusunda oldukça yetersizim. Bu ödev sayesinde bir şeyler öğrenmeye çalışıyorum. Youtube yardımıyla aşağıdaki gibi bir kod yazabildim. Fakat hâlâ istediğim programı elde edemedim. Program çalışıyor ama doğru harfi girdikçe kelimenin içinde yer almıyor o harf. Bir de girilen tüm harfleri hafızada tutup outputta göstermem gerekiyor. Ne eklemeliyim nasıl yapmalıyım tam olarak bulamadım. Tekrardan teşekkür ederim.

}
Merhabalar
Asagidaki kodlari duzgun bir compiler ile derlemeden sonra istediginizi elde edebilirsiniz. Bazi programlarin uyusmamasi sebebi ile sizde belki calismayabilir. Ben gcc compiler ile duzenledim.
kolay gelsin

Kod:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
   char arr[91][20]={"kelime1","kelime2"};
   char harf;
   char toplam[15]={'&','&','&','&','&','&','&','&','&','&','&','&', '&','&','&'};
   int i,size=0,x,y=0,d=0,t=0;
   srand(time(NULL));
   printf("kelimeyi  tahmin ediniz ?\n");
   x=0+rand()%50;
   size=strlen(arr[x]);
   for(i=0;i<size;i++)
   {
      printf("__ ");
   }
   printf("\n");
   while(y<5)
   {
      printf("\nbir harf gir ");
      fflush(stdin);
      scanf("%c",&harf);
      for(i=0;i<size;i++)
      {
         if(harf==arr[x][i])
         {
            toplam[i]=harf;
            d++;
            t++;
         }
      }
      if(d==0)
      {
         printf("\a");
         y++;
      }
      if(d!=0)
      {
         for(i=0;i<size;i++)
         {
            if(toplam[i]!='&')
            {
               printf("%c ",toplam[i]);
            }else{
               printf("__ ");
            }
         }
      }else{
         printf("%d. hakkinizi doldurdunuz\n",y);
         if(y!=5)
         {
            printf("%d hakkiniz kaldi\n",5-y);
         }
         if(y==5)
         {
            printf("GAME OVER!!!\n");
            printf("dogru cevap '%s' olacakti\n\n",arr[x]);
         }
      }
      if(t==size)
      {
         printf("\n\nTEBRIKLER !!!\n");
         break;
      }
      d=0;
      printf("\n");
   }
   printf("\n");
   system("pause");
   return(0);
}
 
Konu sahibi
Konu sahibi
saika

saika

MB Üyesi
Kayıt
2 Eylül 2015
Mesajlar
5
Tepkiler
1
Üniv
İstanbul Medipol Üniversitesi
Merhabalar
Asagidaki kodlari duzgun bir compiler ile derlemeden sonra istediginizi elde edebilirsiniz. Bazi programlarin uyusmamasi sebebi ile sizde belki calismayabilir. Ben gcc compiler ile duzenledim.
kolay gelsin

Kod:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
   char arr[91][20]={"kelime1","kelime2"};
   char harf;
   char toplam[15]={'&','&','&','&','&','&','&','&','&','&','&','&', '&','&','&'};
   int i,size=0,x,y=0,d=0,t=0;
   srand(time(NULL));
   printf("kelimeyi  tahmin ediniz ?\n");
   x=0+rand()%50;
   size=strlen(arr[x]);
   for(i=0;i<size;i++)
   {
      printf("__ ");
   }
   printf("\n");
   while(y<5)
   {
      printf("\nbir harf gir ");
      fflush(stdin);
      scanf("%c",&harf);
      for(i=0;i<size;i++)
      {
         if(harf==arr[x][i])
         {
            toplam[i]=harf;
            d++;
            t++;
         }
      }
      if(d==0)
      {
         printf("\a");
         y++;
      }
      if(d!=0)
      {
         for(i=0;i<size;i++)
         {
            if(toplam[i]!='&')
            {
               printf("%c ",toplam[i]);
            }else{
               printf("__ ");
            }
         }
      }else{
         printf("%d. hakkinizi doldurdunuz\n",y);
         if(y!=5)
         {
            printf("%d hakkiniz kaldi\n",5-y);
         }
         if(y==5)
         {
            printf("GAME OVER!!!\n");
            printf("dogru cevap '%s' olacakti\n\n",arr[x]);
         }
      }
      if(t==size)
      {
         printf("\n\nTEBRIKLER !!!\n");
         break;
      }
      d=0;
      printf("\n");
   }
   printf("\n");
   system("pause");
   return(0);
}



Gerçekten çok teşekkür ederim yardımlarınız mutlu etti :) iyi akşamlar
 
Yukarı Alt