🎮🔢 Rasgele Sayı Bulma Oyunu - Ana Kod (C) 🔢🎮

fsKS

Üye
11 Şub 2023
137
74
👨‍💻 Adım: Ana Menü Öncelikle, "menu.h" adında bir dosya oluşturarak ana menüyü oluşturabilirsiniz. Ana menüde, oyunu başlatma seçeneği, seçenekleri değiştirme seçeneği ve oyunu kapatma seçeneği olabilir.

C:
#ifndef MENU_H
#define MENU_H

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void display_menu() {
    printf("------------------------------\n");
    printf("|     RASGELE SAYI OYUNU     |\n");
    printf("------------------------------\n");
    printf("|         1. Yeni Oyun       |\n");
    printf("|         2. En İyi Skorlar  |\n");
    printf("|         3. Kurallar        |\n");
    printf("|         4. Çıkış           |\n");
    printf("------------------------------\n");
    printf("Seçiminiz: ");
}

void new_game() {
    // Yeni oyun başlatmak için gerekli kodlar
}

void show_highscores() {
    // En iyi skorları göstermek için gerekli kodlar
}

void show_rules() {
    // Kuralları göstermek için gerekli kodlar
}

#endif /* MENU_H */

🎲 Adım: Oyun Tahtası Rasgele sayılar, bir oyun tahtası üzerinde oluşturulabilir. Bu tahtayı oluşturmak için "board.h" adında bir dosya oluşturabilirsiniz. Tahta boyutlarını belirleyebilir ve rasgele sayıların konumunu takip etmek için bir dizi kullanabilirsiniz.

C:
#ifndef BOARD_H
#define BOARD_H

#define BOARD_WIDTH 20 // Oyun tahtasının genişliği
#define BOARD_HEIGHT 20 // Oyun tahtasının yüksekliği

typedef struct {
    int x;
    int y;
} Pozisyon;

typedef enum {
    BOS,
    YILAN,
    YEM,
    DUVAR
} HucreTipi;

HucreTipi board[BOARD_HEIGHT][BOARD_WIDTH]; // Oyun tahtası

void board_olustur(); // Oyun tahtasını oluşturur
void board_guncelle(Pozisyon* yilan_pozisyonlari, int yilan_uzunlugu, Pozisyon yem_pozisyonu); // Oyun tahtasını günceller

#endif /* BOARD_H */

🔢 Adım: Rasgele Sayılar Rasgele sayılar, C'de "rand()" fonksiyonu kullanılarak oluşturulabilir. Bu fonksiyon, "stdlib.h" kütüphanesi altında yer alır. "srand()" fonksiyonu ile rasgele sayılar için bir başlangıç değeri belirleyebilirsiniz.

C:
#ifndef BOARD_H
#define BOARD_H

#include <stdlib.h> // random, srand
#include <time.h>   // time

// Oyun tahtası boyutunu belirleyen sabitler
#define BOARD_ROWS 10
#define BOARD_COLS 10

// Tahta üzerindeki her bir hücreyi temsil eden struct
typedef struct {
    int row; // Hücrenin satırı
    int col; // Hücrenin sütunu
} Cell;

// Tahta üzerindeki her bir hücrenin değerini temsil eden enum
typedef enum {
    EMPTY, // Hücre boş
    FOOD   // Hücrede yemek var
} CellValue;

// Oyun tahtasını temsil eden struct
typedef struct {
    CellValue cells[BOARD_ROWS][BOARD_COLS]; // Tahtanın hücrelerinin değerleri
    int food_row; // Yemek hücresinin satırı
    int food_col; // Yemek hücresinin sütunu
} Board;

// Oyun tahtasını oluşturmak için kullanılan fonksiyon
Board create_board();

// Yemek hücresini tahtaya yerleştirmek için kullanılan fonksiyon
void place_food(Board *board);

#endif

🕹️ Adım: Oyun Mantığı Rasgele sayı bulmaca oyununun mantığı, oyuncunun rasgele bir sayıyı tahmin etmesi ve doğru sayıyı bulmaya çalışmasıdır. Oyun mantığını "game.h" dosyasında tanımlayabilirsiniz. Oyunun temel kurallarını, puanlama sistemini ve diğer özellikleri belirleyebilirsiniz.

C:
#ifndef GAME_H
#define GAME_H

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// Rasgele sayı üretimi için kullanılacak aralıkların minimum ve maksimum değerleri
#define MIN_NUMBER 1
#define MAX_NUMBER 100

// Oyunun mevcut durumunu tutacak olan struct
struct GameState {
    int number_to_guess;
    int guess_count;
    int guess_limit;
};

// Yeni bir oyun durumu yaratma fonksiyonu
struct GameState new_game_state(int guess_limit) {
    // Oyun durumu için gerekli değişkenleri tanımlama
    struct GameState game_state;
    int number_to_guess;

    // Rastgele sayı üretimi
    srand(time(NULL));
    number_to_guess = rand() % (MAX_NUMBER - MIN_NUMBER + 1) + MIN_NUMBER;

    // Oyun durumu değişkenlerini başlatma
    game_state.number_to_guess = number_to_guess;
    game_state.guess_count = 0;
    game_state.guess_limit = guess_limit;

    return game_state;
}

// Tahmin kontrolü yapma fonksiyonu
int check_guess(struct GameState *game_state, int guess) {
    // Tahmin sayısını artırma
    game_state->guess_count++;

    // Tahminin doğru olup olmadığını kontrol etme
    if (guess == game_state->number_to_guess) {
        return 1;
    } else if (guess < game_state->number_to_guess) {
        printf("Daha yüksek bir sayı girin.\n");
    } else {
        printf("Daha düşük bir sayı girin.\n");
    }

    // Tahmin hakkı kalmadıysa oyunu kaybettin mesajını gösterme
    if (game_state->guess_count >= game_state->guess_limit) {
        printf("Oyunu kaybettiniz. Doğru sayı: %d\n", game_state->number_to_guess);
        return -1;
    }

    // Tahmin hakkı kaldıysa oyun devam ediyor
    return 0;
}

#endif

🚀 Adım: Oyun Motoru Son olarak, oyunun motorunu oluşturmanız gerekiyor. Bu motor, oyuncunun tahminlerini alacak, doğru tahmini kontrol edecek ve puanlama sistemini işletecek. Motoru "engine.h" dosyasında tanımlayabilirsiniz.

C:
#ifndef ENGINE_H
#define ENGINE_H

#include <stdlib.h>
#include <time.h>

// Rasgele sayı üretmek için kullanılan fonksiyon
int generate_random_number(int min_num, int max_num)
{
    static int init_flag = 0;
    if (!init_flag) {
        srand(time(NULL));
        init_flag = 1;
    }
    return (rand() % (max_num - min_num + 1)) + min_num;
}

#endif // ENGINE_H

Rasgele sayı bulmaca oyununu bu adımları takip ederek oluşturabilirsiniz. "main.c" dosyasında ana menüyü çağırarak oyunu başlatabilirsiniz. İyi şanslar ve keyifli kodlamalar! 😊

C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "board.h"
#include "engine.h"
#include "menu.h"

int main() {
    srand(time(NULL)); // rastgele sayı üretmek için başlangıç zamanını kullan

    int board_size = get_board_size(); // kullanıcıdan oyun tahtasının boyutunu iste
    int target = get_target(); // kullanıcıdan hedef sayıyı iste

    Board board = create_board(board_size); // oyun tahtasını oluştur
    initialize_board(&board); // tahtayı başlangıç değerleriyle doldur

    printf("Oyun tahtası:\n");
    print_board(&board); // oyun tahtasını yazdır

    Engine engine = create_engine(&board, target); // oyun motorunu oluştur

    int num_moves = 0; // hamle sayısı
    int result = -1; // oyun sonucu

    do {
        int row, col, val;
        get_move(&row, &col, &val); // kullanıcıdan hamle girişini iste

        int move_result = make_move(&engine, row, col, val); // hamleyi yap ve sonucu kaydet

        if (move_result == -1) {
            printf("Geçersiz hamle. Lütfen tekrar deneyin.\n");
        } else if (move_result == 0) {
            printf("Bu hamle sonucu, hedefe ulaşamayacaksınız.\n");
        } else if (move_result == 1) {
            printf("Tebrikler! Hedef sayıya ulaştınız.\n");
            result = 1;
            break;
        } else {
            printf("Hamle kabul edildi.\n");
            num_moves++;
        }

        printf("Oyun tahtası:\n");
        print_board(&board); // güncellenmiş oyun tahtasını yazdır

    } while (num_moves < board_size * board_size); // oyun bitti mi kontrol et

    if (result == -1) {
        printf("Oyun bitti. Hedef sayıya ulaşamadınız.\n");
    } else {
        printf("Oyun bitti. %d hamlede hedef sayıya ulaştınız.\n", num_moves);
    }

    destroy_board(&board); // oyun tahtasını serbest bırak
    destroy_engine(&engine); // oyun motorunu serbest bırak

    return 0;
}
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.