C语言实战演练之游戏框架

简介: C语言实战演练之游戏框架

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
 
#define WIDTH 50
#define HEIGHT 25
 
int snake_x[WIDTH * HEIGHT], snake_y[WIDTH * HEIGHT];
int food_x, food_y;
int snake_length;
int score;
int direction;
 
void gotoxy(int x, int y) {
    COORD coord;
    coord.X = x;
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
 
void generate_food() {
    srand((unsigned)time(NULL));
    food_x = rand() % (WIDTH - 2) + 1;
    food_y = rand() % (HEIGHT - 2) + 1;
}
 
void draw() {
    system("cls");
    for (int i = 0; i < WIDTH; i++) {
        printf("#");
    }
    printf("
");
 
    for (int i = 1; i < HEIGHT - 1; i++) {
        printf("#");
        for (int j = 1; j < WIDTH - 1; j++) {
            if (i == food_y && j == food_x) {
                printf("*");
            } else {
                int is_snake = 0;
                for (int k = 0; k < snake_length; k++) {
                    if (i == snake_y[k] && j == snake_x[k]) {
                        printf("O");
                        is_snake = 1;
                        break;
                    }
                }
                if (!is_snake) {
                    printf(" ");
                }
            }
        }
        printf("#
");
    }
 
    for (int i = 0; i < WIDTH; i++) {
        printf("#");
    }
    printf("
");
    printf("Score: %d", score);
}
 
void update() {
    int prev_x = snake_x[0], prev_y = snake_y[0];
    int prev2_x, prev2_y;
    switch (direction) {
        case 0: // Up
            snake_y[0]--;
            break;
        case 1: // Down
            snake_y[0]++;
            break;
        case 2: // Right
            snake_x[0]++;
            break;
        case 3: // Left
            snake_x[0]--;
            break;
    }
    for (int i = 1; i < snake_length; i++) {
        prev2_x = snake_x[i];
        prev2_y = snake_y[i];
        snake_x[i] = prev_x;
        snake_y[i] = prev_y;
        prev_x = prev2_x;
        prev_y = prev2_y;
    }
    if (snake_x[0] == food_x && snake_y[0] == food_y) {
        score += 10;
        snake_length++;
        generate_food();
    }
}
相关文章
|
4天前
|
存储 Shell Linux
操作系统实战(一)(linux+C语言)
本篇文章重点在于利用linux系统的完成操作系统的实验,巩固课堂知识
|
4天前
|
存储 算法 C语言
【C 言专栏】用 C 语言开发游戏的实践
【5月更文挑战第5天】本文探讨了使用C语言开发游戏的实践,包括选择适合的游戏类型(如贪吃蛇、俄罗斯方块),设计游戏框架、图形界面和逻辑,以及音效添加。文章还强调了性能优化、测试调试、跨平台挑战及未来发展趋势。对于热衷于C语言的开发者,这是一次挑战与乐趣并存的探索之旅。
【C 言专栏】用 C 语言开发游戏的实践
|
4天前
|
存储 算法 程序员
C语言:深入探索与实战应用
C语言:深入探索与实战应用
13 0
|
4天前
|
C语言
以c语言为基础实现的简易扫雷游戏(游戏代码附在文章最后,如有需要请自取)
以c语言为基础实现的简易扫雷游戏(游戏代码附在文章最后,如有需要请自取)
51 1
|
4天前
|
人工智能 机器人 测试技术
【C/C++】C语言 21点桌牌游戏 (源码) 【独一无二】
【C/C++】C语言 21点桌牌游戏 (源码) 【独一无二】
|
4天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
3天前
|
C语言
C语言—内存函数的实现和模拟实现(内存函数的丝绸之路)
C语言—内存函数的实现和模拟实现(内存函数的丝绸之路)
17 0
|
3天前
|
C语言
C语言—字符函数与字符串函数(字符问题变简单的关键之技)
C语言—字符函数与字符串函数(字符问题变简单的关键之技)
4 0
|
3天前
|
C语言
C语言——函数递归
C语言——函数递归
4 0
|
3天前
|
C语言
C语言—函数(大化小方式的心脏)
C语言—函数(大化小方式的心脏)
3 0