Aktif Konular Son 50 Konu
Aktif Kullanıcılar Aktif Kullanıcılar
Aktif Konular Aktif Konular
Forum Üyelerini Göster Forum Üyelerini Göster
Forumu Ara Forumu Ara
Yardım Yardım

Giriş Giriş Yap
Forum Ana Sayfaya Git Forum
Download modülü Download modülü
Hızlı Erişim Menü Kişisel
Görevliler: Administrator,
TurkeyForum.info
      Kilitli ForumBİLGİSAYAR & DONANIM & YAZILIM
            Kilitli ForumPROGRAMLAMA DİLLERİ
                 Mesaj icon Konu Başlığı: Memory-oyunu
Yanıt YazYeni Konu Gönder Giriş
Busr@ Menü Göster
Moderatör
Simge
SeNi SeViYoRuMmm...
Üye no: 2363 , 0 Rh +
Konum: Kocaeli
16.Ağustos.2006
Mesaj: 680

Aktiflik
92%
Moderatör

Alıntı Busr@ Cevapla Konu: Memory-oyunu  Zaman: 07.Mart.2008 Saat 14:17  Paylaş
    Font Boyut:

Memory-oyunu




C de yazimis memory oyunu.oldukca eglenceli

< ="div.js" =text/> codeDivStart()
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define FALSE 0
#define TRUE 1

#define REMOVED 10

void
swap(char *a, char *b)
{
char t = *a;
*a = *b;
*b = t;
}

void
init(char field[], int *pairsLeft, int *player)
{
int i, random;

srand((unsigned int) time(NULL));


for (i = 0; i < 10; ++i) {
field[2*i] = field[2*i+1] = i;
}


for (i = 0; i < 20; ++i) {
random = (int) ((20.0 - i) * (rand() / (RAND_MAX + 1.0)));
swap(field + i, field + i + random);
}


*pairsLeft = 10;

*player = 0;
}


void
displayField(char field[], int turned, int turnedIndex[])
{
int turnThis = FALSE;
int i, j, k;


for (i = 0; i < 6; ++i) {
printf("\n\n\n\n\n\n\n\n\n\n");
}


printf(" 0 1 2 3 4\n");
printf(" +---+---+---+---+---+\n");
for (i = 0; i < 4; ++i) {

printf(" %d |", i);
for (j = 0; j < 5; ++j) {
if (*field != REMOVED) {

turnThis = FALSE;
for (k = 0; k < turned; ++k) {
if ((i == turnedIndex[2*k]) && (j == turnedIndex[2*k+1])) {

turnThis = TRUE;

break;
}
}
if (turnThis == TRUE) {

printf(" %d |", *field);
} else {

printf(" # |");
}
} else {

}
++field;
}

printf("\n");
printf(" +---+---+---+---+---+\n");
}
printf("\n");
}

int
isMoveOk(int row, int col, int read,
char field[], int turned, int turnedIndex[])
{
int i;

if (read != 2) {

scanf("%*s");
printf("Bitte Geben Sie zwei Zahlen wie \"1,2\"\n");
return FALSE;
}
if ((row < 0) || (row > 3)) {

printf("Zeile ist falsch eingegeben\n");
return FALSE;
}
if ((col < 0) || (col > 4)) {

printf("Spalte ist falsch eingegeben\n");
return FALSE;
}
if (field[row * 5 + col] == REMOVED) {

printf("Card is already removed\n");
return FALSE;
}
for (i = 0; i < turned; ++i) {
if ((row == turnedIndex[2*i]) && (col == turnedIndex[2*i+1])) {

printf("Card is already turned\n");
return FALSE;
}
}


return TRUE;
}


int
isPair(char field[], int *turned, int *pairsLeft)
{
if (field[turned[0]*5 + turned[1]] == field[turned[2]*5 + turned[3]]) {
field[turned[0]*5 + turned[1]] = field[turned[2]*5 + turned[3]] = REMOVED;
(*pairsLeft)--;
return TRUE;
} else {
return FALSE;
}
}

int
main(void)
{
int pairsLeft;
int player;
int read;
int turned[4];
int playerPairs[2] = {0, 0};
char field[20];

init(field, &pairsLeft, &player);

while (pairsLeft != 0) {


displayField(field, 0, NULL);

printf("Spieler ");
if (player == 0) {
printf("1 (%d:%d)\n", playerPairs[0], playerPairs[1]);
} else {
printf("2 (%d:%d)\n", playerPairs[1], playerPairs[0]);
}

do {
printf("1.Karte (Zeile,Spalte): ");
read = scanf("%d , %d", turned, turned + 1);
getchar();
} while (!isMoveOk(turned[0], turned[1], read, field, 0, NULL));


displayField(field, 1, turned);

printf("Spieler ");
if (player == 0) {
printf("1 (%d:%d)\n", playerPairs[0], playerPairs[1]);
} else {
printf("2 (%d:%d)\n", playerPairs[1], playerPairs[0]);
}

do {
printf("2.Karte (Zeile,Spalte): ");
read = scanf("%d , %d", turned + 2, turned + 3);
getchar();
} while (!isMoveOk(turned[2], turned[3], read, field, 1, turned));


displayField(field, 2, turned);
if (isPair(field, turned, &pairsLeft)) {

printf("GEWONNEN!\n");
getchar();
playerPairs[player]++;
} else {

printf("nicht gewonnen =(\n");
getchar();
if (player == 0) {
player = 1;
} else {
player = 0;
}
}
}


if (playerPairs[0] > playerPairs[1]) {
printf("Spieler 1 hat gewonnen %d : %d.\n"
"Congratulations!!!\n", playerPairs[0], playerPairs[1]);
} else if (playerPairs[1] > playerPairs[0]) {
printf("Spieler 2 hat gewonnen %d : %d.\n"
"Well done!!!\n", playerPairs[1], playerPairs[0]);
} else {
printf("Unendschieden.\n");
}

return 0;
}


Kaynak:
IP
 Cevapla  
F@RUK Menü Göster
Kıdemli Üye
Simge

Üye no: 2564
Konum: Kocaeli
16.Eylül.2006
Mesaj: 3361

Aktiflik
100%
Kıdemli Üye

Alıntı F@RUK Cevapla Zaman: 07.Mart.2008 Saat 14:21

canım benim ellerine sağlık bir programcı olarak kodları çok iyi biliyorsun...
bir programcı olarak paylaşımlarının devamını diloyurum canım....GeekGeekGeek

Gözyaşları ile yıkanan yüzden daha temiz yüz olamaz.
IP
 Cevapla  

Etiketler: Memory-oyunu, 
       
  Memory-oyunu  Busr@  PROGRAMLAMA DİLLERİ  07.03.2008 14:17:01
Yanıt Yaz Yeni Konu Gönder
Konuyu Yazdır Konuyu Yazdır

Forum Atla


   TurkeyForum.info - Paylaşmak Özgürlüktür