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();
    }
}
相关文章
|
1月前
|
C语言
C语言之斗地主游戏
该代码实现了一个简单的斗地主游戏,包括头文件引入、宏定义、颜色枚举、卡牌类、卡牌类型类、卡牌组合类、玩家类、游戏主类以及辅助函数等,涵盖了从牌的生成、分配、玩家操作到游戏流程控制的完整逻辑。
72 8
|
2月前
|
C语言
扫雷游戏(用C语言实现)
扫雷游戏(用C语言实现)
125 0
|
24天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
41 2
|
1月前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
32 1
|
2月前
|
C语言
初学者指南:使用C语言实现简易版扫雷游戏
初学者指南:使用C语言实现简易版扫雷游戏
44 0
|
测试技术 程序员 C语言
《测试驱动的嵌入式C语言开发》——2.1节什么是自动化单元测试框架
本节书摘来自华章社区《测试驱动的嵌入式C语言开发》一书中的第2章,第2.1节什么是自动化单元测试框架,作者:(美)James W. Grenning,更多章节内容可以访问云栖社区“华章社区”公众号查看
1473 0
|
21天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
40 10
|
21天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
42 9
|
21天前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
32 8
|
21天前
|
C语言 开发者
【C语言】数学函数详解
在C语言中,数学函数是由标准库 `math.h` 提供的。使用这些函数时,需要包含 `#include <math.h>` 头文件。以下是一些常用的数学函数的详细讲解,包括函数原型、参数说明、返回值说明以及示例代码和表格汇总。
41 6