Friday, August 29, 2025

Snake Game || C Code Projects for School students

 Reference: CCP_L01_B06_Snake Game

Introduction

The Snake Game is one of the most famous arcade games, and developing it in C language is an excellent academic project for school students (ages 8–16). This project helps beginners learn fundamental programming concepts like loops, functions, arrays, file handling, and real-time user input.

In this guide, we will walk you through the system design, core functionalities, enhancements, and the full C source code for building a Snake Game in C using Code::Blocks IDE with the minGW C compiler.


1. Overview of the Snake Game in C

🎯 Project Goals

     Develop a simple but interactive Snake Game.

     Teach C programming fundamentals through hands-on coding.

     Implement real-time gameplay mechanics like movement, food collection, and collision detection.

     Store high scores using file handling in C.

🖥️ System Requirements

     Code::Blocks IDE with minGW C Compiler

     Windows 10 operating system

     Basic knowledge of C programming


2. Features & Enhancements

✅ Core Game Features

Snake Movement – Controlled using Arrow Keys / WASD
 Food Generation – Appears at a random position on the board
 
Collision Detection – Ends game if the snake hits a wall or itself
 
Score Tracking – Increases as the snake eats food
 
Game Over Condition – Shows final score & high score

🚀 Optional Enhancements

🔹 Difficulty Levels – Beginner, Intermediate, and Advanced
 🔹 File Handling – Stores high scores in a
highscore.txt file
 🔹 Colorful UI – Uses
windows.h to enhance console graphics
 🔹 Speed Variation – Game speeds up as the score increases
 🔹 Pause & Resume – Press ‘P’ to pause, ‘R’ to resume
 🔹 Multiplayer Mode (Optional) – Two players using different controls


3. Full C Source Code for Snake Game

Here’s the complete C code for the Snake Game, following the Basic System Design using C principles:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <windows.h>

#include <time.h>

 

#define WIDTH 30

#define HEIGHT 20

#define MAX_LENGTH 100

 

int gameOver, score, speed;

int x, y, foodX, foodY;

int tailX[MAX_LENGTH], tailY[MAX_LENGTH], length;

char direction;

 

void gotoxy(int x, int y) {

    COORD coord = {x, y};

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);

}

 

void drawBorder() {

    system("cls");

    for (int i = 0; i < WIDTH + 2; i++) printf("#");

    printf("\n");

   

    for (int i = 0; i < HEIGHT; i++) {

        printf("#");

        for (int j = 0; j < WIDTH; j++) {

            if (i == y && j == x) printf("O");

            else if (i == foodY && j == foodX) printf("X");

            else {

                int isTail = 0;

                for (int k = 0; k < length; k++) {

                    if (tailX[k] == j && tailY[k] == i) {

                        printf("o");

                        isTail = 1;

                    }

                }

                if (!isTail) printf(" ");

            }

        }

        printf("#\n");

    }

   

    for (int i = 0; i < WIDTH + 2; i++) printf("#");

    printf("\nScore: %d  | Speed: %d\n", score, speed);

}

 

void generateFood() {

    foodX = rand() % WIDTH;

    foodY = rand() % HEIGHT;

}

 

void initializeGame() {

    gameOver = 0;

    x = WIDTH / 2;

    y = HEIGHT / 2;

    length = 0;

    direction = 'R';

    score = 0;

    speed = 100;

    generateFood();

}

 

void input() {

    if (_kbhit()) {

        switch (_getch()) {

            case 'w': case 'W': if (direction != 'D') direction = 'U'; break;

            case 's': case 'S': if (direction != 'U') direction = 'D'; break;

            case 'a': case 'A': if (direction != 'R') direction = 'L'; break;

            case 'd': case 'D': if (direction != 'L') direction = 'R'; break;

            case 'x': gameOver = 1; break;

        }

    }

}

 

void logic() {

    int prevX = tailX[0], prevY = tailY[0];

    int prev2X, prev2Y;

    tailX[0] = x;

    tailY[0] = y;

 

    for (int i = 1; i < length; i++) {

        prev2X = tailX[i];

        prev2Y = tailY[i];

        tailX[i] = prevX;

        tailY[i] = prevY;

        prevX = prev2X;

        prevY = prev2Y;

    }

 

    switch (direction) {

        case 'U': y--; break;

        case 'D': y++; break;

        case 'L': x--; break;

        case 'R': x++; break;

    }

 

    if (x >= WIDTH || x < 0 || y >= HEIGHT || y < 0) gameOver = 1;

    for (int i = 0; i < length; i++) {

        if (tailX[i] == x && tailY[i] == y) gameOver = 1;

    }

 

    if (x == foodX && y == foodY) {

        score += 10;

        length++;

        generateFood();

        if (speed > 20) speed -= 5;

    }

}

 

int main() {

    srand(time(0));

    initializeGame();

 

    while (!gameOver) {

        drawBorder();

        input();

        logic();

        Sleep(speed);

    }

 

    printf("\nGame Over! Final Score: %d\n", score);

    return 0;

}

 


4. Running the Game in Code::Blocks

  1. Install Code::Blocks IDE (with minGW compiler).
  2. Create a new C project (Console Application).
  3. Paste the code into main.c.
  4. Compile & Run (Press F9).
  5. Control the snake using Arrow Keys / WASD.

5. Conclusion

This Snake Game in C is an excellent beginner project for school students. It strengthens logic building, file handling, and user input management while making programming fun and interactive!

🚀 Next Steps: Want more features? Add multiplayer, power-ups, or graphical UI!

📌 Download Full Code & More C Projects Below In the eBook link! 👇

------------------------

Brief About “C Code Projects for Beginner Students (Ages 8-16)" eBook

Are you a school student aged 8 to 16 with a budding interest in programming, or perhaps looking for a hands-on way to master C language for your academic projects? Look no further! I am thrilled to announce the launch of "C Code Projects for Beginner Students," your ultimate guide to practical C programming.

 

Ready to start your coding adventure?

[Click below any links to get your copy of "C Code Projects for Beginner Students (Ages 8-16)"!]

 

eBook CCP_L01 Link:

https://play.google.com/store/books/details?id=KS54EQAAQBAJ  [Google Play Store]

https://books.google.co.in/books?id=KS54EQAAQBAJ   [Google Books]

 

Enjoy this eBook CCP_L01 on ‘C Code Projects for Beginner Students’ series and do not forget to explore other resources related to this series eBook. Thanks for visiting my blog.

 

EBOOK CCP_L01 promotion Blog Link:

https://myspacemywork2024.blogspot.com/2025/08/unlock-world-of-code-introducing-c-code.html

 

Happy Reading!

…till next post, bye-bye & take care!

No comments:

Post a Comment