🐍 C İle Yılan Oyunu Geliştirme Adımları 🕹️

fsKS

Üye
11 Şub 2023
137
74
👨‍💻 Adım: Ana Menü Oyunun ana menüsünü oluşturmak için "menu.h" adında bir dosya oluşturun. Bu dosyada, kullanıcının oyunu başlatması, seçenekleri değiştirmesi veya oyunu kapatması gibi seçenekler yer alacaktır. Ana menüde birkaç seçenek belirleyin ve kullanıcıların bunları seçmesini sağlayın.

C:
#ifndef MENU_H
#define MENU_H

#include <stdio.h>

void printMainMenu() {
    printf("Yilan Oyunu\n");
    printf("-----------\n");
    printf("1. Oyunu Baslat\n");
    printf("2. Seçenekleri Değiştir\n");
    printf("3. Oyundan Çık\n");
}

#endif

🎲 Adım: Oyun Tahtası Yılan oyunu, bir oyun tahtası kullanır. Bu tahtayı oluşturmak için "board.h" adında bir dosya oluşturun ve tahta boyutlarını belirleyin. Ayrıca, yılanın konumunu ve yönünü takip etmek için bir dizi veya bağlı liste kullanabilirsiniz.

C:
#ifndef BOARD_H
#define BOARD_H

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

#define BOARD_WIDTH 30
#define BOARD_HEIGHT 20

// Board renklerini tanımlayalım
typedef enum {
    BLACK,
    RED,
    GREEN,
    YELLOW,
    BLUE,
    MAGENTA,
    CYAN,
    WHITE
} Color;

// Board karesini tanımlayalım
typedef struct {
    int x;
    int y;
    Color color;
} Square;

// Board yapısını tanımlayalım
typedef struct {
    Square squares[BOARD_WIDTH][BOARD_HEIGHT];
} Board;

// Board fonksiyonlarını tanımlayalım
void initBoard(Board* board);
void drawBoard(const Board* board);

#endif

🐍 Adım: Yılan ve Yem Yılan oyunu, yılanın yemleri yiyerek büyüdüğü bir oyundur. Yılan ve yemleri oluşturmak için "snake.h" ve "food.h" adında iki dosya oluşturun ve yılanın boyutunu, renklerini, yönlerini ve diğer özelliklerini belirleyin. Ayrıca, yemleri rastgele bir konuma yerleştirin.

Snake.h;
C:
#ifndef SNAKE_H
#define SNAKE_H

#include <stdbool.h>
#include "board.h"

// Snake directions
typedef enum {
    UP,
    RIGHT,
    DOWN,
    LEFT
} Direction;

// Snake structure
typedef struct {
    int x;
    int y;
    Direction direction;
    int length;
    int maxLength;
    int score;
    bool hasCollided;
    char headChar;
    char bodyChar;
} Snake;

// Food structure
typedef struct {
    int x;
    int y;
    char charRep;
} Food;

void initSnake(Snake* snake, int startX, int startY, Direction startDirection, int startLength, int maxLength, char headChar, char bodyChar);
void moveSnake(Board* board, Snake* snake, bool shouldGrow);
bool checkCollision(const Board* board, const Snake* snake);
void growSnake(Snake* snake);
void resetSnake(Snake* snake);
void drawSnake(const Snake* snake, Board* board);
void drawFood(const Food* food, Board* board);
void placeFood(Board* board, Food* food, const Snake* snake);
void updateScore(Snake* snake, int points);

#endif

food.h;

C:
#ifndef FOOD_H
#define FOOD_H

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

#include "board.h"

// Food struct
typedef struct {
    int x;
    int y;
} Food;

// Function prototypes
void generateFood(const Board* board, Food* food);
bool isFoodEaten(const Food* food, int x, int y);

// Function definitions

// Generate a random position for the food on the board
void generateFood(const Board* board, Food* food) {
    // Generate a random seed
    srand(time(NULL));

    // Keep generating random positions until an empty cell is found
    do {
        food->x = rand() % BOARD_WIDTH;
        food->y = rand() % BOARD_HEIGHT;
    } while (getCell(board, food->x, food->y) != CELL_EMPTY);
}

// Check if the given position matches the food position
bool isFoodEaten(const Food* food, int x, int y) {
    return (food->x == x && food->y == y);
}

#endif

🕹️ Adım: Oyun Mantığı Yılan oyununun temel mantığı, yılanın yemleri yiyerek büyümesi ve tahtanın kenarlarına veya yılanın kendisine çarpmadan mümkün olduğunca uzun bir yılan olmasıdır. Oyun mantığını oluşturmak için "game.h" adında bir dosya oluşturun ve oyunun temel kurallarını, puanlama sistemini ve diğer özellikleri belirleyin.

C:
#ifndef GAME_H
#define GAME_H

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

#include "board.h"
#include "snake.h"
#include "food.h"

// Game struct
typedef struct {
    Board board;
    Snake snake;
    Food food;
    int score;
    bool gameOver;
} Game;

// Function prototypes
void initGame(Game* game);
void moveSnake(Game* game, Direction dir);
void updateGame(Game* game);
bool isGameOver(const Game* game);
void handleInput(Game* game);

// Function definitions

// Initialize the game
void initGame(Game* game) {
    initBoard(&game->board);
    initSnake(&game->snake, BOARD_WIDTH / 2, BOARD_HEIGHT / 2);
    generateFood(&game->board, &game->food);
    game->score = 0;
    game->gameOver = false;
}

// Move the snake in the given direction
void moveSnake(Game* game, Direction dir) {
    setSnakeDirection(&game->snake, dir);
}

// Update the game state
void updateGame(Game* game) {
    // Move the snake
    moveSnakeForward(&game->snake);

    // Check if the snake has collided with a wall or itself
    if (isSnakeColliding(&game->snake, &game->board)) {
        game->gameOver = true;
        return;
    }

    // Check if the snake has eaten the food
    if (isFoodEaten(&game->food, game->snake.head.x, game->snake.head.y)) {
        // Increase the score
        game->score++;

        // Grow the snake
        growSnake(&game->snake);

        // Generate a new food
        generateFood(&game->board, &game->food);
    }
}

// Check if the game is over
bool isGameOver(const Game* game) {
    return game->gameOver;
}

// Handle input from the user
void handleInput(Game* game) {
    // Get the user input
    char c = getchar();

    // Ignore any input that is not a direction key
    if (c != 'w' && c != 'a' && c != 's' && c != 'd') {
        return;
    }

    // Move the snake in the corresponding direction
    switch (c) {
        case 'w':
            moveSnake(game, DIRECTION_UP);
            break;
        case 'a':
            moveSnake(game, DIRECTION_LEFT);
            break;
        case 's':
            moveSnake(game, DIRECTION_DOWN);
            break;
        case 'd':
            moveSnake(game, DIRECTION_RIGHT);
            break;
    }
}

#endif

🚀 Adım: Oyun Motoru Son olarak, oyunun motorunu oluşturmanız gerekiyor. Bu motor, oyuncuların yılanı hareket ettirmelerini, yönlerini değiştirmelerini ve yılanın yemlerle etkileşime girmesini sağlar. Motoru oluşturmak için "engine.h" adında bir dosya oluşturun ve oyunun işleyişini sağlayacak fonksiyonları burada tanımlayın.

C:
#ifndef ENGINE_H
#define ENGINE_H

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

#include "board.h"
#include "snake.h"
#include "food.h"

// Game struct
typedef struct {
    Board board;
    Snake snake;
    Food food;
    int score;
    bool gameOver;
} Game;

// Function prototypes
void initializeGame(Game* game);
void updateGame(Game* game, Direction direction);
bool isGameOver(const Game* game);

// Function definitions

// Initialize the game state
void initializeGame(Game* game) {
    // Initialize the board
    initializeBoard(&(game->board));

    // Initialize the snake
    initializeSnake(&(game->snake));

    // Generate the initial food
    generateFood(&(game->board), &(game->food));

    // Set the initial score and game over state
    game->score = 0;
    game->gameOver = false;
}

// Update the game state based on the user's input direction
void updateGame(Game* game, Direction direction) {
    // Check if the game is already over
    if (game->gameOver) {
        return;
    }

    // Move the snake in the specified direction
    moveSnake(&(game->snake), direction);

    // Check if the snake has collided with a wall or itself
    if (isWallCollision(&(game->board), &(game->snake)) || isSelfCollision(&(game->snake))) {
        game->gameOver = true;
        return;
    }

    // Check if the snake has eaten the food
    if (isFoodEaten(&(game->food), game->snake.head->x, game->snake.head->y)) {
        // Increase the score
        game->score++;

        // Add a new segment to the snake
        addSnakeSegment(&(game->snake));

        // Generate a new food
        generateFood(&(game->board), &(game->food));
    }
}

// Check if the game is over
bool isGameOver(const Game* game) {
    return game->gameOver;
}

#endif

Yılan oyununu bu adımları takip ederek oluşturabilirsiniz. Oyunu çalıştırmak için "main.c" adında bir dosya oluşturun ve ana menüden oyunu başlatın. İyi şanslar ve keyifli kodlamalar! 😊

C:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

#include "menu.h"
#include "board.h"
#include "snake.h"
#include "food.h"
#include "game.h"
#include "engine.h"

int main() {
    // Set random seed
    srand(time(NULL));

    // Create menu and get user selection
    int selection = showMenu();

    // Initialize game board
    Board board;
    initBoard(&board);

    // Initialize snake and food
    Snake snake;
    Food food;
    initSnake(&snake);
    generateFood(&board, &food);

    // Play game according to user selection
    switch (selection) {
        case 1:
            playGame(&board, &snake, &food, &updateSnakePosition);
            break;
        case 2:
            playGame(&board, &snake, &food, &updateSnakePositionWithWalls);
            break;
        case 3:
            playGame(&board, &snake, &food, &updateSnakePositionWithTeleport);
            break;
        default:
            printf("Invalid selection. Exiting game.\n");
            exit(EXIT_FAILURE);
    }

    return 0;
}
 

Phobos'

Uzman üye
22 Nis 2022
1,744
1,364
Sözde 5 dilde uzman arkadaşımız başkasının kodunu alıyor...
:D
1500 satır Python kodu yazdım. Arayüz olsaymış, daha iyi olurmuş dedi. Ben de bu back-end geliştirme için kullanılan bir programlama dili, dedim. Sonra hastaneye götürdük adamı, yazılım bilene yazılım ile ilgili laf etme sonucu kansere yakalanmış.

Umarım öl
ür
mez.
 

Grimner

Adanmış Üye
28 Mar 2020
6,308
4,726
1500 satır Python kodu yazdım. Arayüz olsaymış, daha iyi olurmuş dedi. Ben de bu back-end geliştirme için kullanılan bir programlama dili, dedim. Sonra hastaneye götürdük adamı, yazılım bilene yazılım ile ilgili laf etme sonucu kansere yakalanmış.
Güzel hikaye... keşke hikaye yazacağına azıcık kod yazsan...
 

fsKS

Üye
11 Şub 2023
137
74
Arkadaşlar lütfen sakin olalım bildiğimi forumla paylaşmak istedim sadece
 

Zreaoz

Üye
21 Haz 2021
165
54
👨‍💻 Adım: Ana Menü Oyunun ana menüsünü oluşturmak için "menu.h" adında bir dosya oluşturun. Bu dosyada, kullanıcının oyunu başlatması, seçenekleri değiştirmesi veya oyunu kapatması gibi seçenekler yer alacaktır. Ana menüde birkaç seçenek belirleyin ve kullanıcıların bunları seçmesini sağlayın.

C:
#ifndef MENU_H
#define MENU_H

#include <stdio.h>

void printMainMenu() {
    printf("Yilan Oyunu\n");
    printf("-----------\n");
    printf("1. Oyunu Baslat\n");
    printf("2. Seçenekleri Değiştir\n");
    printf("3. Oyundan Çık\n");
}

#endif

🎲 Adım: Oyun Tahtası Yılan oyunu, bir oyun tahtası kullanır. Bu tahtayı oluşturmak için "board.h" adında bir dosya oluşturun ve tahta boyutlarını belirleyin. Ayrıca, yılanın konumunu ve yönünü takip etmek için bir dizi veya bağlı liste kullanabilirsiniz.

C:
#ifndef BOARD_H
#define BOARD_H

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

#define BOARD_WIDTH 30
#define BOARD_HEIGHT 20

// Board renklerini tanımlayalım
typedef enum {
    BLACK,
    RED,
    GREEN,
    YELLOW,
    BLUE,
    MAGENTA,
    CYAN,
    WHITE
} Color;

// Board karesini tanımlayalım
typedef struct {
    int x;
    int y;
    Color color;
} Square;

// Board yapısını tanımlayalım
typedef struct {
    Square squares[BOARD_WIDTH][BOARD_HEIGHT];
} Board;

// Board fonksiyonlarını tanımlayalım
void initBoard(Board* board);
void drawBoard(const Board* board);

#endif

🐍 Adım: Yılan ve Yem Yılan oyunu, yılanın yemleri yiyerek büyüdüğü bir oyundur. Yılan ve yemleri oluşturmak için "snake.h" ve "food.h" adında iki dosya oluşturun ve yılanın boyutunu, renklerini, yönlerini ve diğer özelliklerini belirleyin. Ayrıca, yemleri rastgele bir konuma yerleştirin.

Snake.h;
C:
#ifndef SNAKE_H
#define SNAKE_H

#include <stdbool.h>
#include "board.h"

// Snake directions
typedef enum {
    UP,
    RIGHT,
    DOWN,
    LEFT
} Direction;

// Snake structure
typedef struct {
    int x;
    int y;
    Direction direction;
    int length;
    int maxLength;
    int score;
    bool hasCollided;
    char headChar;
    char bodyChar;
} Snake;

// Food structure
typedef struct {
    int x;
    int y;
    char charRep;
} Food;

void initSnake(Snake* snake, int startX, int startY, Direction startDirection, int startLength, int maxLength, char headChar, char bodyChar);
void moveSnake(Board* board, Snake* snake, bool shouldGrow);
bool checkCollision(const Board* board, const Snake* snake);
void growSnake(Snake* snake);
void resetSnake(Snake* snake);
void drawSnake(const Snake* snake, Board* board);
void drawFood(const Food* food, Board* board);
void placeFood(Board* board, Food* food, const Snake* snake);
void updateScore(Snake* snake, int points);

#endif

food.h;

C:
#ifndef FOOD_H
#define FOOD_H

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

#include "board.h"

// Food struct
typedef struct {
    int x;
    int y;
} Food;

// Function prototypes
void generateFood(const Board* board, Food* food);
bool isFoodEaten(const Food* food, int x, int y);

// Function definitions

// Generate a random position for the food on the board
void generateFood(const Board* board, Food* food) {
    // Generate a random seed
    srand(time(NULL));

    // Keep generating random positions until an empty cell is found
    do {
        food->x = rand() % BOARD_WIDTH;
        food->y = rand() % BOARD_HEIGHT;
    } while (getCell(board, food->x, food->y) != CELL_EMPTY);
}

// Check if the given position matches the food position
bool isFoodEaten(const Food* food, int x, int y) {
    return (food->x == x && food->y == y);
}

#endif

🕹️ Adım: Oyun Mantığı Yılan oyununun temel mantığı, yılanın yemleri yiyerek büyümesi ve tahtanın kenarlarına veya yılanın kendisine çarpmadan mümkün olduğunca uzun bir yılan olmasıdır. Oyun mantığını oluşturmak için "game.h" adında bir dosya oluşturun ve oyunun temel kurallarını, puanlama sistemini ve diğer özellikleri belirleyin.

C:
#ifndef GAME_H
#define GAME_H

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

#include "board.h"
#include "snake.h"
#include "food.h"

// Game struct
typedef struct {
    Board board;
    Snake snake;
    Food food;
    int score;
    bool gameOver;
} Game;

// Function prototypes
void initGame(Game* game);
void moveSnake(Game* game, Direction dir);
void updateGame(Game* game);
bool isGameOver(const Game* game);
void handleInput(Game* game);

// Function definitions

// Initialize the game
void initGame(Game* game) {
    initBoard(&game->board);
    initSnake(&game->snake, BOARD_WIDTH / 2, BOARD_HEIGHT / 2);
    generateFood(&game->board, &game->food);
    game->score = 0;
    game->gameOver = false;
}

// Move the snake in the given direction
void moveSnake(Game* game, Direction dir) {
    setSnakeDirection(&game->snake, dir);
}

// Update the game state
void updateGame(Game* game) {
    // Move the snake
    moveSnakeForward(&game->snake);

    // Check if the snake has collided with a wall or itself
    if (isSnakeColliding(&game->snake, &game->board)) {
        game->gameOver = true;
        return;
    }

    // Check if the snake has eaten the food
    if (isFoodEaten(&game->food, game->snake.head.x, game->snake.head.y)) {
        // Increase the score
        game->score++;

        // Grow the snake
        growSnake(&game->snake);

        // Generate a new food
        generateFood(&game->board, &game->food);
    }
}

// Check if the game is over
bool isGameOver(const Game* game) {
    return game->gameOver;
}

// Handle input from the user
void handleInput(Game* game) {
    // Get the user input
    char c = getchar();

    // Ignore any input that is not a direction key
    if (c != 'w' && c != 'a' && c != 's' && c != 'd') {
        return;
    }

    // Move the snake in the corresponding direction
    switch (c) {
        case 'w':
            moveSnake(game, DIRECTION_UP);
            break;
        case 'a':
            moveSnake(game, DIRECTION_LEFT);
            break;
        case 's':
            moveSnake(game, DIRECTION_DOWN);
            break;
        case 'd':
            moveSnake(game, DIRECTION_RIGHT);
            break;
    }
}

#endif

🚀 Adım: Oyun Motoru Son olarak, oyunun motorunu oluşturmanız gerekiyor. Bu motor, oyuncuların yılanı hareket ettirmelerini, yönlerini değiştirmelerini ve yılanın yemlerle etkileşime girmesini sağlar. Motoru oluşturmak için "engine.h" adında bir dosya oluşturun ve oyunun işleyişini sağlayacak fonksiyonları burada tanımlayın.

C:
#ifndef ENGINE_H
#define ENGINE_H

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

#include "board.h"
#include "snake.h"
#include "food.h"

// Game struct
typedef struct {
    Board board;
    Snake snake;
    Food food;
    int score;
    bool gameOver;
} Game;

// Function prototypes
void initializeGame(Game* game);
void updateGame(Game* game, Direction direction);
bool isGameOver(const Game* game);

// Function definitions

// Initialize the game state
void initializeGame(Game* game) {
    // Initialize the board
    initializeBoard(&(game->board));

    // Initialize the snake
    initializeSnake(&(game->snake));

    // Generate the initial food
    generateFood(&(game->board), &(game->food));

    // Set the initial score and game over state
    game->score = 0;
    game->gameOver = false;
}

// Update the game state based on the user's input direction
void updateGame(Game* game, Direction direction) {
    // Check if the game is already over
    if (game->gameOver) {
        return;
    }

    // Move the snake in the specified direction
    moveSnake(&(game->snake), direction);

    // Check if the snake has collided with a wall or itself
    if (isWallCollision(&(game->board), &(game->snake)) || isSelfCollision(&(game->snake))) {
        game->gameOver = true;
        return;
    }

    // Check if the snake has eaten the food
    if (isFoodEaten(&(game->food), game->snake.head->x, game->snake.head->y)) {
        // Increase the score
        game->score++;

        // Add a new segment to the snake
        addSnakeSegment(&(game->snake));

        // Generate a new food
        generateFood(&(game->board), &(game->food));
    }
}

// Check if the game is over
bool isGameOver(const Game* game) {
    return game->gameOver;
}

#endif

Yılan oyununu bu adımları takip ederek oluşturabilirsiniz. Oyunu çalıştırmak için "main.c" adında bir dosya oluşturun ve ana menüden oyunu başlatın. İyi şanslar ve keyifli kodlamalar! 😊

C:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

#include "menu.h"
#include "board.h"
#include "snake.h"
#include "food.h"
#include "game.h"
#include "engine.h"

int main() {
    // Set random seed
    srand(time(NULL));

    // Create menu and get user selection
    int selection = showMenu();

    // Initialize game board
    Board board;
    initBoard(&board);

    // Initialize snake and food
    Snake snake;
    Food food;
    initSnake(&snake);
    generateFood(&board, &food);

    // Play game according to user selection
    switch (selection) {
        case 1:
            playGame(&board, &snake, &food, &updateSnakePosition);
            break;
        case 2:
            playGame(&board, &snake, &food, &updateSnakePositionWithWalls);
            break;
        case 3:
            playGame(&board, &snake, &food, &updateSnakePositionWithTeleport);
            break;
        default:
            printf("Invalid selection. Exiting game.\n");
            exit(EXIT_FAILURE);
    }

    return 0;
}
eline saglik knk guzel olmus
 
Ü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.