C/C++ (scanf)

Başlatan sknrk, 06 Kasım 2015 - 15:10:57

« önceki - sonraki »

0 Üyeler ve 5 Ziyaretçi konuyu incelemekte.

sknrk

Merhaba sevgili forum üyeleri bugün size soracağım konu benim çok işime yarayacak. Scanf veya cin sizin klavyeden bir değer girmenizi beklemektedir ve benim ihtiyacım olan ise beklememesi. Yani 0.5 saniye içinde ben girersem o işlemi yapacak eğer girmezsem de devam edecek. Snake kodunu yazıyordum gerekenler oldu fakat sadece ihtiyacım olan olay bu. Kodu şuraya bırakayım.
#include<stdio.h>
#include<stdlib.h>
char dizi[100][100];
int skor[10000];
int h;
FILE *oku2,*oku,*yaz;
typedef struct snake
{
int pointi,pointj;
struct snake *next;
}snake;
snake *bas,*son,*tut,*current;
void ekle()
{
   snake *temp;
temp=(snake *)malloc(sizeof(snake));
temp->next=son;
son=temp;
if(son->next->pointi==son->pointi+1)
{
temp->pointi=temp->next->pointi-1;
temp->pointj=temp->next->pointj;
}
if(son->next->pointi==son->pointi-1)
   {
      temp->pointi=temp->next->pointi+1;
      temp->pointj=temp->next->pointj;
   }
if(son->next->pointj==son->pointj+1)
   {
      temp->pointi=temp->next->pointi;
      temp->pointj=temp->next->pointj-1;
   }
if(son->next->pointj==son->pointj-1)
   {
      temp->pointi=temp->next->pointi;
      temp->pointj=temp->next->pointj+1;
   }
}
int main()
{
int skor=0,degil=0,i,j,m,pointyi=0,pointyj=0;
oku=fopen("skorgirdi.txt","rw");
// oku2=fopen("skorgirdikisi.txt","r");
// yaz=fopen("skorgirdi.txt","w");
char n ;
snake *ilk,*iki;
snake *current;
ilk=(snake *)malloc(sizeof(snake));
iki=(snake *)malloc(sizeof(snake));
ilk->pointi=ilk->pointj=3;
bas=ilk;
iki->next=ilk;
iki->pointi=3;
iki->pointj=2;
son=iki;
dizi[iki->pointi][iki->pointj]='X';
dizi[ilk->pointi][ilk->pointj]='X';
while(1)
{
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
if(dizi[i][j]!=0)
{
printf("%c  ",dizi[i][j]);
}
else
{
printf(".  ");
}
}
printf("\n");
}
printf("\n");
scanf("%c",&n);
if(n=='w')
{
dizi[son->pointi][son->pointj]=0;
tut=son->next;
bas->next=son;
son->pointi=bas->pointi-1;
son->pointj=bas->pointj;
bas=son;
bas->next=NULL;
son=tut;
dizi[bas->pointi][bas->pointj]='X';
}
if(n=='a')
{
dizi[son->pointi][son->pointj]=0;
tut=son->next;
bas->next=son;
son->pointi=bas->pointi;
son->pointj=bas->pointj-1;
bas=son;
bas->next=NULL;
son=tut;
dizi[bas->pointi][bas->pointj]='X';
}
if(n=='s')
{
dizi[son->pointi][son->pointj]=0;
tut=son->next;
bas->next=son;
son->pointi=bas->pointi+1;
son->pointj=bas->pointj;
bas=son;
bas->next=NULL;
son=tut;
dizi[bas->pointi][bas->pointj]='X';
}
if(n=='d')
{
dizi[son->pointi][son->pointj]=0;
tut=son->next;
bas->next=son;
son->pointi=bas->pointi;
son->pointj=bas->pointj+1;
bas=son;
bas->next=NULL;
son=tut;
dizi[bas->pointi][bas->pointj]='X';
}
if(bas->pointi==11)
{
dizi[bas->pointi][bas->pointj]=0;
bas->pointi=1;
dizi[bas->pointi][bas->pointj]='X';
}
if(bas->pointj==11)
{
dizi[bas->pointi][bas->pointj]=0;
bas->pointj=1;
dizi[bas->pointi][bas->pointj]='X';
}
if(bas->pointj==0)
{
          dizi[bas->pointi][bas->pointj]=0;
          bas->pointj=10;
          dizi[bas->pointi][bas->pointj]='X';
}
if(bas->pointi==0)
{
        dizi[bas->pointi][bas->pointj]=0;
          bas->pointi=10;
          dizi[bas->pointi][bas->pointj]='X';
}
for(current=son;current->next!=NULL;current=current->next)
{
if(current->pointi==bas->pointi && current->pointj==bas->pointj)
{
goto bitis ;
}
}
if(pointyi==0 && pointyj==0)
{
yemyine :
degil=0;
srand(time(NULL));
pointyi=1+rand()%9;
pointyj=1+rand()%9;
for(current=son;current->next!=NULL;current=current->next)
{
if(current->pointi==pointyi && current->pointj==pointyj)
{
degil++;
}
}
if(degil!=0)
{
goto yemyine;
}
dizi[pointyi][pointyj]='Y';
}
if(bas->pointi==pointyi && bas->pointj==pointyj)
{
skor++;
ekle();
dizi[son->pointi][son->pointj]='X';
pointyi=0;
pointyj=0;
goto yemyine ;
}
system("clear");
}
bitis :
system("clear");
printf("Oyun Bitti\nSkorunuz:%d\n",skor);
printf("Skorunuz kaydedilsin mi?\nE-Evet\nH-Hayır\n");
/* scanf(" %c",&n);
if(n=='E')
{
fscanf(oku,"%d",&h);
printf("%d",h);
for(i=1;i<=h;i++)
{
fscanf(oku,"%d",&skor[i]);
}
for(i=1;i<=h;i++)
{
printf("%d",skor[i]);
}
h++;
fprintf(yaz,"%d",h);
for(i=1;i<=h;i++)
{
fprintf(yaz,"%d",skor[i]);
}
}*/
return 0;
}

Kodda çok fazla eksik nokta var biliyorum dosya okuma ile bir sıkıntı olduğu için ve oyunda bir küçük hata olduğundan dolayı skor tablosunu erteledim.

iskenderoguz


sknrk

Alıntı yapılan: iskenderoguz - 06 Kasım 2015 - 16:59:31
buraya bakabilirsin
Dedigini kodda uyguladim cok sagol bilgi icin fakat simdide 2. seferde segmentation fault aliyorum acaba bu kullandigim seyle alakali bir ipucu var midir ?
#include <unistd.h>
#include <poll.h>
#include <stdio.h>
#include<stdio.h>
#include<stdlib.h>
char dizi[100][100];
int skor[10000];
int h;
FILE *oku2,*oku,*yaz;
typedef struct snake
{
int pointi,pointj;
struct snake *next;
struct snake *last;
}snake;
snake *bas,*son,*tut,*current;
void ekle()
{
    snake *temp;
temp=(snake *)malloc(sizeof(snake));
temp->next=son;
temp->next->last=temp;
son=temp;
if(son->next->pointi==son->pointi+1)
{
temp->pointi=temp->next->pointi-1;
temp->pointj=temp->next->pointj;
}
if(son->next->pointi==son->pointi-1)
    {
      temp->pointi=temp->next->pointi+1;
      temp->pointj=temp->next->pointj;
   }
if(son->next->pointj==son->pointj+1)
   {
      temp->pointi=temp->next->pointi;
      temp->pointj=temp->next->pointj-1;
   }
if(son->next->pointj==son->pointj-1)
   {
      temp->pointi=temp->next->pointi;
      temp->pointj=temp->next->pointj+1;
   }
}
int main()
{
struct pollfd mypoll = { STDIN_FILENO, POLLIN|POLLPRI };
int skor=0,degil=0,i,j,m,pointyi=0,pointyj=0;
oku=fopen("skorgirdi.txt","rw");
// oku2=fopen("skorgirdikisi.txt","r");
// yaz=fopen("skorgirdi.txt","w");
char n ;
snake *ilk,*iki;
snake *current;
ilk=(snake *)malloc(sizeof(snake));
iki=(snake *)malloc(sizeof(snake));
ilk->pointi=ilk->pointj=3;
bas=ilk;
iki->next=ilk;
iki->pointi=3;
iki->pointj=2;
son=iki;
ilk->last=iki;
dizi[iki->pointi][iki->pointj]='X';
dizi[ilk->pointi][ilk->pointj]='X';
while(1)
{
for(i=1;i<=10;i++)
{
for(j=1;j<=10;j++)
{
if(dizi[i][j]!=0)
{
printf("%c  ",dizi[i][j]);
}
else
{
printf(".  ");
}
}
printf("\n");
}
printf("\n");
if( poll(&mypoll, 0.5, 2000) )
    {
        scanf("%c",&n);
    }
    else
    {
if(bas->last->pointi<bas->pointi)
{
dizi[son->pointi][son->pointj]=0;
      tut=son->next;
            bas->next=son;
            son->pointi=bas->pointi+1;
            son->pointj=bas->pointj;
            son->last=bas;
            bas=son;
            son->last=NULL;
            bas->next=NULL;
            son=tut;
            dizi[bas->pointi][bas->pointj]='X';
goto atla;
}
if(bas->last->pointi>bas->pointi)
{
dizi[son->pointi][son->pointj]=0;
            tut=son->next;
            bas->next=son;
            son->pointi=bas->pointi-1;
            son->pointj=bas->pointj;
            son->last=bas;
            bas=son;
            son->last=NULL;
            bas->next=NULL;
            son=tut;
            dizi[bas->pointi][bas->pointj]='X';
goto atla;
}
if(bas->last->pointj<bas->pointj)
{
dizi[son->pointi][son->pointj]=0;
            tut=son->next;
            bas->next=son;
            son->pointi=bas->pointi;
            son->pointj=bas->pointj+1;
            son->last=bas;
            bas=son;
            son->last=NULL;
            bas->next=NULL;
            son=tut;
            dizi[bas->pointi][bas->pointj]='X';
goto atla;
}
if(bas->last->pointj>bas->pointj)
{
    dizi[son->pointi][son->pointj]=0;
            tut=son->next;
            bas->next=son;
            son->pointi=bas->pointi;
            son->pointj=bas->pointj-1;
            son->last=bas;
            bas=son;
            son->last=NULL;
            bas->next=NULL;
            son=tut;
            dizi[bas->pointi][bas->pointj]='X';
goto atla;
}
    }
//scanf("%c",&n);
if(n=='w')
{
dizi[son->pointi][son->pointj]=0;
tut=son->next;
bas->next=son;
son->pointi=bas->pointi-1;
son->pointj=bas->pointj;
son->last=bas;
bas=son;
son->last=NULL;
bas->next=NULL;
son=tut;
dizi[bas->pointi][bas->pointj]='X';
}
if(n=='a')
{
dizi[son->pointi][son->pointj]=0;
tut=son->next;
bas->next=son;
son->pointi=bas->pointi;
son->pointj=bas->pointj-1;
son->last=bas;
bas=son;
son->last=NULL;
bas->next=NULL;
son=tut;
dizi[bas->pointi][bas->pointj]='X';
}
if(n=='s')
{
dizi[son->pointi][son->pointj]=0;
tut=son->next;
bas->next=son;
son->pointi=bas->pointi+1;
son->pointj=bas->pointj;
son->last=bas;
bas=son;
son->last=NULL;
bas->next=NULL;
son=tut;
dizi[bas->pointi][bas->pointj]='X';
}
if(n=='d')
{
dizi[son->pointi][son->pointj]=0;
tut=son->next;
bas->next=son;
son->pointi=bas->pointi;
son->pointj=bas->pointj+1;
son->last=bas;
bas=son;
son->last=NULL;
bas->next=NULL;
son=tut;
dizi[bas->pointi][bas->pointj]='X';
}
atla:
if(bas->pointi==11)
{
dizi[bas->pointi][bas->pointj]=0;
bas->pointi=1;
dizi[bas->pointi][bas->pointj]='X';
}
if(bas->pointj==11)
{
dizi[bas->pointi][bas->pointj]=0;
bas->pointj=1;
dizi[bas->pointi][bas->pointj]='X';
}
if(bas->pointj==0)
{
          dizi[bas->pointi][bas->pointj]=0;
          bas->pointj=10;
          dizi[bas->pointi][bas->pointj]='X';
}
if(bas->pointi==0)
{
        dizi[bas->pointi][bas->pointj]=0;
          bas->pointi=10;
          dizi[bas->pointi][bas->pointj]='X';
}
for(current=son;current->next!=NULL;current=current->next)
{
if(current->pointi==bas->pointi && current->pointj==bas->pointj)
{
goto bitis ;
}
}
if(pointyi==0 && pointyj==0)
{
yemyine :
degil=0;
srand(time(NULL));
pointyi=1+rand()%9;
pointyj=1+rand()%9;
for(current=son;current->next!=NULL;current=current->next)
{
if(current->pointi==pointyi && current->pointj==pointyj)
{
degil++;
}
}
if(degil!=0)
{
goto yemyine;
}
dizi[pointyi][pointyj]='Y';
}
if(bas->pointi==pointyi && bas->pointj==pointyj)
{
skor++;
ekle();
dizi[son->pointi][son->pointj]='X';
pointyi=0;
pointyj=0;
goto yemyine ;
}
system("clear");
}
bitis :
system("clear");
printf("Oyun Bitti\nSkorunuz:%d\n",skor);
printf("Skorunuz kaydedilsin mi?\nE-Evet\nH-Hayır\n");
/* scanf(" %c",&n);
if(n=='E')
{
fscanf(oku,"%d",&h);
printf("%d",h);
for(i=1;i<=h;i++)
{
fscanf(oku,"%d",&skor[i]);
}
for(i=1;i<=h;i++)
{
printf("%d",skor[i]);
}
h++;
fprintf(yaz,"%d",h);
for(i=1;i<=h;i++)
{
fprintf(yaz,"%d",skor[i]);
}
}*/
return 0;
}


Sh4oTT


sknrk

Alıntı yapılan: ShaoTT - 11 Kasım 2015 - 06:38:02
Yilan oyunumu bu?
Evet geçen sene işsizlikten yapmıştım struct yeni öğrendiğim zamanlarda. Çok daha iyisini yaparım şimdi ama uğraşmak istemiyor insan.