2023--亲测C语言环境搭建并运行一个简单的贪吃蛇(含编译后的exe)_window

news2024/12/24 10:16:13

一. 说明

安装教程博客参考这里博主写的用VScodeC语言编译器(MinGW-W64 GCC)的方式在window搭建的方法.

博客里面要用上的资源0积分下载(vscode那个不翻墙下载得太慢了)

*就别再用什么VC++6.0了,都win11都出来了,版本环境啥的一堆错,你要古老咋不用 DOS开始嘛,国内好多老师就是舍不得改变教学大纲非用个老东西教学生入门,说起来就不该C语言入门,改用python的。 *

最近帮助学妹,这里顺便写个博客。给后来的编程入门学习人们,即使用VScodeC语言编译器(MinGW-W64 GCC)的方式学习C语言

懒得搭环境,只想玩贪吃蛇的这里 0积分贪吃蛇exe程序下载

1.多说点的

博客里面

5、复制完成后将所有的 "C:/Program Files/mingw64替换为MinGW-W64 GCC解压后的mingw64文件的地址。

这一步骤,鼠标右击选择更改所有匹配项,不要傻兮兮的一个一个替换,以及替换的路径的斜杠是反斜杠(直接从window窗口复制的是正斜杠,记得改),如下我放在 H盘的C文件夹下就是替换成下面这样:

H:/C/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/mingw64

二.效果示意与代码

运行的效果如下(比那些Dev C++ 5.11和VC++ 6.0 这些好看多了好吧),程序员第一步,搭建环境,搭建一个看起来编码方便,直观的环境是避免放弃学习的关键。(还有如果不是学嵌入式的,编程入门还是别用C, 先学python吧,免得指针,链表出来把脑袋弄晕,明明python里面实现那么简单的,血泪教育啊 年轻人们)
在这里插入图片描述

贪吃蛇源码如下

// 2023.9.13 hiro by Chatgpt
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>

#define WIDTH 40
#define HEIGHT 20

int gameOver;
int score;
int x, y;  // 蛇头坐标
int fruitX, fruitY;  // 食物坐标
int tailX[100], tailY[100];  // 蛇身坐标
int tailLength;
enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };
enum eDirection dir;

void Setup() {
    gameOver = 0;
    score = 0;
    x = WIDTH / 2;
    y = HEIGHT / 2;
    fruitX = rand() % WIDTH;
    fruitY = rand() % HEIGHT;
    dir = STOP;
}

void Draw() {
    system("cls");
    printf("Use 'W', 'A', 'S', 'D' 方向键来控制蛇头.\n\n");
    for (int i = 0; i < WIDTH + 2; i++)
        printf("#");
    printf("\n");

    for (int i = 0; i < HEIGHT; i++) {
        for (int j = 0; j < WIDTH; j++) {
            if (j == 0)
                printf("#");
            if (i == y && j == x)
                printf("O");
            else if (i == fruitY && j == fruitX)
                printf("F");
            else {
                int printTail = 0;
                for (int k = 0; k < tailLength; k++) {
                    if (tailX[k] == j && tailY[k] == i) {
                        printf("o");
                        printTail = 1;
                    }
                }
                if (!printTail)
                    printf(" ");
            }

            if (j == WIDTH - 1)
                printf("#");
        }
        printf("\n");
    }

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

    printf("分数: %d\n", score);
}

void Input() {
    if (_kbhit()) {
        switch (_getch()) {
            case 'a':
                dir = LEFT;
                break;
            case 'd':
                dir = RIGHT;
                break;
            case 'w':
                dir = UP;
                break;
            case 's':
                dir = DOWN;
                break;
            case 'x':
                gameOver = 1;
                break;
        }
    }
}

void Logic() {
    int prevX = tailX[0];
    int prevY = tailY[0];
    int prev2X, prev2Y;
    tailX[0] = x;
    tailY[0] = y;

    for (int i = 1; i < tailLength; i++) {
        prev2X = tailX[i];
        prev2Y = tailY[i];
        tailX[i] = prevX;
        tailY[i] = prevY;
        prevX = prev2X;
        prevY = prev2Y;
    }

    switch (dir) {
        case LEFT:
            x--;
            break;
        case RIGHT:
            x++;
            break;
        case UP:
            y--;
            break;
        case DOWN:
            y++;
            break;
    }

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

    for (int i = 0; i < tailLength; i++) {
        if (tailX[i] == x && tailY[i] == y)
            gameOver = 1;
    }

    if (x == fruitX && y == fruitY) {
        score += 10;
        fruitX = rand() % WIDTH;
        fruitY = rand() % HEIGHT;
        tailLength++;
    }
}

int main() {

    printf("年轻人等待游戏加载,大概5s--");
    int playAgain = 1;

    while (playAgain) {
        Setup();

        while (!gameOver) {
            Draw();
            Input();
            Logic();
            Sleep(10);  // 控制游戏速度
        }

        printf("\nGame Over! 年轻人 \n");
        printf("最佳分数: %d\n", score);
        printf("输入任意键重新开启.\n");

        if (_getch() != 'q')
            printf("tuitui.\n");
    }

    return 0;
}

三.其他给初学者的提示

  1. F5 是程序运行快捷键
  2. c语言成功运行后会在同级文件夹下生成编程成功的exe文件,可以直接点击改exe文件就能运行之前的程序
    (有些点击了闪了一下就没了,那是因为程序执行完毕后立即退出导致的,可以在代码中添加一些等待用户输入的代码,
    或者使用类似于"Press any key to continue…"的提示信息。
    这样,程序在执行结束后会等待用户的输入,使窗口保持打开状态,直到用户按下任意键为止,下面 等待用户输入.c)
    3.中文输入法设置输出英文标点,可以应对解决初学者百分之60的错误。

等待用户输入.c

//等待用户输入.c
#include <stdio.h>

int main() {
    printf("内容内容,哈哈哈哈");
    printf("\n");
    printf("\n");
    printf("\n");
    printf("程序执行完毕,请按下任意键继续...");
    getchar();  // 等待用户输入
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1006224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

金蝶云星空和金蝶云星空接口打通对接实战

金蝶云星空和金蝶云星空接口打通对接实战 接通系统&#xff1a;金蝶云星空 金蝶K/3Cloud&#xff08;金蝶云星空&#xff09;是移动互联网时代的新型ERP&#xff0c;是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”&#xff0c;旨在帮助…

阿里后端开发:抽象建模经典案例【文末送书】

文章目录 写作前面1.抽象思维2.软件世界中的抽象3. 经典抽象案例4. 抽象并非一蹴而就&#xff01;需要不断假设、验证、完善5. 推荐一本书 写作末尾 写作前面 在互联网行业&#xff0c;软件工程师面对的产品需求大都是以具象的现实世界事物概念来描述的&#xff0c;遵循的是人…

如何一次让ChatGPT输入多个版本的内容供你选择

随着人工智能的不断进步&#xff0c;我们对于AI工具的需求也在日益增加。尤其是像GPT这样的高级工具&#xff0c;单一的答案输出已经不能满足用户的多元需求。实际上&#xff0c;当我们面对一个问题时&#xff0c;多种答案的输出能让我们更全面地了解和思考&#xff0c;这样我们…

小程序赖加载刷新数据页面数据堆叠问题debug

目录 项目所需 原生写赖加载存在的bug 解决问题思路及代码实现 思路&#xff1a; 代码实现&#xff1a; 列表.wxml 列表.js Wenjain_shanchu.js Wenjain_shanchu.json Wenjain_shanchu.wxml shouye.js ⭐️ 好书推荐 【内容简介】 项目所需 某高校大一新生入学&am…

LLM 02-大模型的能力

LLM 02-大模型的能力 我们将深入探讨GPT-3——这个具有代表性的大型语言模型的能力。我们的研究主要基于GPT-3论文中的基准测试&#xff0c;这些测试包括&#xff1a; 标准的自然语言处理&#xff08;NLP&#xff09;基准测试&#xff0c;例如问题回答&#xff1b;一些特殊的一…

浅谈Oauth2.0授权

一、背景 近期公司准备上身份认证平台&#xff08;IAM&#xff09;&#xff0c;主要有两块内容&#xff0c;一部分是单点登录、一部分是账号生命周期管理。其中涉及几个常用的单点登录标准认证协议&#xff0c;其中有SMAL、LOAP、CAS、OIDC、Oauth2.0&#xff0c;本篇文章对Oau…

计算机毕设之基于springboot+vue的社区团购管理系统的设计与实现--前后端分离项目(内含源码+文档+教程)

博主介绍&#xff1a;✌全网粉丝10W,Java领域新星创作者,前互联网大厂软件研发、专注于计算机相关专业毕业项目实战✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可看到个人VX。&#x1f345; 2023年 - 20…

4个维度讲透ChatGPT技术原理,揭开ChatGPT神秘技术黑盒!

4个维度讲透ChatGPT技术原理&#xff0c;揭开ChatGPT神秘技术黑盒&#xff01; 3.1 提示学习3.2 上下文学习3.3 思维链4.1 拥抱变化4.2 定位清晰4.3 合规4.4 经验沉淀 ) 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&#x1f3fb; 《java 面试题…

Python计算机Python二级知识点整理

1. 此时我们这里首先解析一下这个d[A]N,根据ASCII表&#xff0c;我们可以看出字符A对应的十进制数字是65&#xff0c;ord()函数是把字符转换为相对应的ASCII码&#xff0c;chr()函数是ord()函数的逆运算&#xff0c;所以ord("A")65 ,chr(65)A,题目中首先定义了d为一…

无涯教程-JavaScript - XIRR函数

描述 XIRR函数返回的现金Stream量表的内部收益率不一定是周期性的。要计算一系列定期现金Stream量的内部收益率,请使用IRR函数。 语法 XIRR (values, dates, [guess])争论 Argument描述Required/OptionalValues 与日期付款时间表相对应的一系列现金Stream量。 请参阅下面的…

1.centos7安装docker

本文目录&#xff1a; 1.docker 安装1.安装步骤2.安装是否成功校验3.docker加速配置4.hello world来袭&#xff0c;验证安装是否ok 2.卸载docker3.卸载较旧版本docker 使用docker必备的三个官方网站&#xff1a; docker官网&#xff1a;https://www.docker.com docker官方仓库&…

Java笔记:阻塞队列

1. 什么是阻塞队列&#xff1f; 阻塞队列&#xff08;BlockingQueue&#xff09;是一个支持两个附加操作的队列。这两个附加的操作是&#xff1a;在队列为空时&#xff0c;获取元素的线程会等待队列变为非空。当队列满时&#xff0c;存储元素的线程会等待队列可用。阻塞队列常…

github一些有趣的使用场景和基本使用方法

文章目录 github的使用入门安装 Git创建 GitHub 帐户在本地设置 Git克隆仓库进行修改和提交推送更改拉取更新 删除Github上废弃的仓库注意 github更多有趣的使用场景协作和社交编程文档和知识库学习和教育自动化工作流程数据科学和可视化用来写blogGitHub PagesJekyllHexo第三方…

本地离线安装numpy低版本指南

不熟悉python,这几天瞎胡摸索 使用百度paddlepaddle的paddlespeech实现文字和语音互转,在linux系统没有任何问题,一切按照官方文档操作即可 由于本地机器是windows,配置相对较高,就想着在windows整一个paddlepaddle,继续按照官方文档操作,一直报错,首先是numpy版本过高,然后下…

低代码PMS:同事带的项目比我多,为什么管得还比我好?

近年来&#xff0c;随着客户需求不断多元化&#xff0c;要求不断精细化&#xff0c;越来越多企业意识到了项目管理的必要性。通过一款良好的项目管理系统&#xff0c;企业可以在综合管理项目的方方面面&#xff0c;确保实现项目目标的同时&#xff0c;让管理过程化繁为简。 PM…

第二证券:自动驾驶渐近 机构大佬齐看好

据姑苏发布9月11日音讯&#xff0c;国内首条满意车路协同式主动驾驭等级的全息感知才智高速公路即将在江苏姑苏启用。据介绍&#xff0c;该项目覆盖苏台高速S17&#xff08;黄埭互通-阳澄湖北互通&#xff09;。目前已完结悉数工程量超80%&#xff0c;估计9月底完结体系联调联试…

ChatGPT影响不可逆,与AI“共存”才是大趋势

不久前&#xff0c;英国24所顶尖大学联合宣布要撤销ChatGPT禁令&#xff01; 不但联合宣布允许学生和教职员工在合乎道德的情况下使用生成式人工智能&#xff0c;还宣布学校会亲自指导学生使用。 此消息一出来可是让英国留学生们炸开了锅… 几个月前&#xff0c;二十多所英国学…

【微信小程序开发】一文学会使用视图组件进行界面设计

引言 在小程序开发中&#xff0c;界面设计是非常重要的一环。本文将介绍如何学习使用小程序的视图组件进行界面设计&#xff0c;并提供代码示例。 文章目录 引言1. 小程序视图组件简介2. 视图组件的使用方法2.1. 组件的引入2.2. 组件的使用2.3. 组件的事件绑定2.4. 组件的样式设…

通过数据模板自动生成表格table

1.数据模板中的主要几个参数需要注意下(需要加样式可自由设置参数)&#xff1a; title:填入表格的内容 col:1,占一列&#xff0c;row: 3&#xff0c;占3行 align:center居中对齐, pdL&#xff1a;14&#xff0c;padding-left:14, bold:true,加粗 width&#xff1a;100&#xff…

PyTorch实战-实现神经网络图像分类基础Tensor最全操作详解(一)

目录 前言 一、PyTorch数据结构-Tensor 1.什么是Tensor 2.数据Tensor使用场景 3.张量形态 标量&#xff08;0D 张量&#xff09; 向量&#xff08;1D 张量&#xff09; 矩阵(2D张量) 3D 张量与高维张量 二、Tensor的创建 1. 从列表或NumPy数组创建 2. 使用特定的初始…