C语言2D游戏

目录

  • 开头
  • 程序
  • 程序的流程图
  • 这个游戏的效果
  • 结尾

开头

大家好,我叫这是我58。在今天,我用C语言编译出了我的第一个2D游戏。如果你想就看这个2D游戏或者与之相关的内容话,就看下下面的内容吧。

程序

#define _CRT_SECURE_NO_WARNINGS 1
#define HIGH 10
#define WIDTH 10
#define PLAYER 4][1
#define GOAL 4][9
#include <stdio.h>
#include <Windows.h>
void print_table(int arr[HIGH][WIDTH]) {system("cls");int i = 0;int ia = 0;for (i = 0; i < HIGH; i++) {for (ia = 0; ia < WIDTH; ia++) {printf("%d%c", arr[i][ia], WIDTH - 1 == ia ? '\n' : ' ');}}
}
int main() {printf("欢迎你来玩这个游戏,在这个游戏里“0”是空地,“1”是你,而“8”是终点,在这之中,你只需要到达终点,就可以赢了\n");Sleep(2800);int arr[HIGH][WIDTH] = { 0 };if (&arr[PLAYER] == &arr[GOAL]) {goto a;}arr[PLAYER] = 1;arr[GOAL] = 8;char ch = 0;int* p = &arr[PLAYER];int i = 0;do {print_table(arr);ch = getchar();while ('\n' != getchar()) {;}*p = 0;switch (ch) {case 'w':for (i = 0; i < WIDTH; i++) {if (p == &arr[0][i]) {break;}}if (WIDTH == i) {p -= WIDTH;}break;case 'a':for (i = 0; i < HIGH; i++) {if (p == &arr[i][0]) {break;}}if (HIGH == i) {p--;}break;case 's':for (i = 0; i < WIDTH; i++) {if (p == &arr[HIGH - 1][i]) {break;}}if (WIDTH == i) {p += WIDTH;}break;case 'd':for (i = 0; i < HIGH; i++) {if (p == &arr[i][WIDTH - 1]) {break;}}if (HIGH == i) {p++;}break;default:break;}*p = 1;} while (8==arr[GOAL]);a:system("cls");printf("恭喜你,你赢了");return 0;
}

程序的流程图

等待2.8秒
清屏
是(break)
break
是(break)
break
是(break)
break
是(break)
break
否(break)
否(break)
否(break)
否(break)
否(break)
否(清屏)
开始
把宏_CRT_SECURE_NO_WARNINGS为1
定义宏HIGH为你想要的数
定义宏WIDTH为你想要的数(注意:如果宏WIDTH的值过大,就可能会出现一些问题)
定义宏PLAYER为“(你想要的数)][(你想要的数)”(宏PLAYER指玩家在游戏刚开始时就定好的地址)
定义宏GOAL为“(你想要的数)][(你想要的数)”(宏GOAL指终点在游戏刚开始时就定好的地址)
导入stdio.h
导入Windows.h
定义print_table函数
输出“欢迎你来玩这个游戏,在这个游戏里“0”是空地,“1”是你,而“8”是终点,在这之中,你只需要到达终点,就可以赢了\n”
把一个有HIGH行WIDTH列的整型二维数组全部初始化为0
&arr[PLAYER] == &arr[GOAL]?
a:
输出“恭喜你,你赢了”
结束
把arr里的玩家的位置里的数字设为1
把arr数组里的终点的位置里的数字设为8
定义字符ch为0
定义整型指针p为在arr数组里的玩家在游戏刚开始时就定好的地址
定义整型i为0
使用print_table函数(参数有arr数组)
ch为你刚才输入的第一个字符
'\n' != getchar()?
设解引用的p为0
'w' == ch?
设i为0
i < WIDTH?
p == &arr[0][i]?
WIDTH == i?
p向左移动WIDTH位
把解引用的p设为1
8==arr[GOAL]?
'a' == ch?
设i为0
i < HIGH?
p == &arr[i][0]?
HIGH == i?
p向左移动一位
's' == ch?
设i为0
i < WIDTH?
p == &arr[HIGH - 1][i]?
WIDTH == i?
p向右移动WIDTH位
'd' == ch?
设i为0
i < HIGH?
p == &arr[i][WIDTH - 1]?
HIGH == i?
p向右移动1位
i自增1
i自增1
i自增1
i自增1
print_table函数
清屏
结束
开始
定义整型i为0
定义整型ia为0
设i为0
i < HIGH?
设ia为0
ia < WIDTH?
输出“%d%c”(“%d”代形参arr的第i行第ia列,并且如果WIDTH-1等于ia,“%c”就代“\​n”,否则代空格)
ia自增1
i自增1

这个游戏的效果

2D游戏

结尾

在看到这里之后,如果你喜欢这篇博客,就可以评论来互动一下我哦。

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

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

相关文章

第六次作业

一、视图作业 1、创建视图v_emp_dept_id_1&#xff0c;查询销售部门的员工姓名和家庭住址 2、创建视图v_emp_dept&#xff0c;查询销售部门员工姓名和家庭住址及部门名称。 3、创建视图v_dept_emp_count(dept_name,emp_count,avg_salay)&#xff0c;统计每个部门人数并计算平均…

Pandas基础03:数据排序与增删

上一节我们介绍了通过按行索引和按列索引找出相关数据的方法。本章节将进一步介绍如何筛选数据&#xff0c;并对数据进行排序、增删的方法。 示例表格和上一节相同。 1.数据筛选 Python中可以通过区域筛选&#xff0c;即获取某几行某几列的方法得到数据。例如&#xff0c;我要…

数据分表和分库原理

数据分表和分库是数据库设计中常见的扩展和优化手段&#xff0c;用于解决大数据量下的性能瓶颈问题。以下是数据分表和分库的原理&#xff1a; 一、数据分表&#xff08;Sharding&#xff09; 原理&#xff1a; 数据分表是将一个大的数据库表按照一定的规则拆分成多个较小的…

pwn误区的buffer

注意栈顶是闭合的&#xff0c;栈底才是打开的 栈图&#xff1a; |--------------------------| | | | | buffer溢出的时候&#xff0c;是从栈底到栈顶方向

vue3的常用 Composition API有哪些?

Vue.js 3.0 引入了 Composition API&#xff0c;作为一种新的组织组件逻辑的方式&#xff0c;相比于传统的 Options API&#xff0c;Composition API 提供了更灵活、更可复用的代码组织方式。 以下是 Vue 3.0 中常用的 Composition API&#xff1a;setup() 函数&#xff1a; s…

Llama-factory源码详细解读

微调 采用逐行调试的方法&#xff0c;细节来看SFT代码 #mermaid-svg-ygujiVh1wygmSv74 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ygujiVh1wygmSv74 .error-icon{fill:#552222;}#mermaid-svg-ygujiVh1wygmSv74…

实施团队人员配备计划

实施团队人员 &#xff08;一&#xff09;项目经理职责 全面负责项目的规划、执行和监控&#xff0c;确保项目按时、按质量要求完成。与客户沟通&#xff0c;明确项目需求和目标&#xff0c;协调各方资源&#xff0c;解决项目中的重大问题。制定项目计划和预算&#xff0c;监…

LINUX命令行curl指令与python内置urllib模块

urllib是python御用的易用的轻便模块&#xff0c;curl是Linux功能强大的命令行工具&#xff0c;都是参与Web的利器。 (笔记模板由python脚本于2024年07月10日 18:41:12创建&#xff0c;本篇笔记适合喜欢Python和Linux的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&…

【嵌入式DIY实例-ESP8266篇】-LCD1602显示DS1631传感器数据

LCD1602显示DS1631传感器数据 文章目录 LCD1602显示DS1631传感器数据1、DS1631介绍2、硬件准备与接线3、代码实现本文介绍了如何将 ESP8266 NodeMCU 板 (ESP-12E) 与 DS1631 数字温度传感器连接,其中温度值(摄氏度和华氏度)打印在 1602 LCD 屏幕上。 本项目中使用的 1602 LC…

最佳 iPhone 解锁软件工具,可免费下载用于电脑操作的

业内专业人士表示&#xff0c;如果您拥有 iPhone&#xff0c;您一定知道忘记锁屏密码会多么令人沮丧。由于 Apple 的安全功能强大&#xff0c;几乎不可能在没有密码或 Apple ID 的情况下访问锁定的 iPhone。 “当我忘记密码时&#xff0c;如何在没有密码的情况下解锁iPhone&am…

【Cesium开发实战】地下模型功能的实现,可设置透明度及显示隐藏

Cesium有很多很强大的功能&#xff0c;可以在地球上实现很多炫酷的3D效果。今天给大家分享一个可自定义高度的电子围栏。 1.话不多说&#xff0c;先展示 地下模型 2.设计思路 按项目需求&#xff0c;需要对加载在地下部分的模型控制显示隐藏&#xff0c;以及透明度的设置。增…

仕考网:公务员考试的录取流程

公务员考试的录取流程分很多个阶段&#xff0c;以下是流程介绍&#xff1a; 1. 报名阶段&#xff1a;考生需根据公布的招聘信息和岗位要求进行报名。 2. 笔试阶段&#xff1a;公务员笔试&#xff0c;包括申论和行测两部分。 3. 成绩公布与面试资格&#xff1a;笔试合格者将获…

编译原理:词法分析器 Flex工具的使用(简单易懂)

目录 词法分析器 & Flex工具的使用背景&#xff1a;编译器和解释器概念区别编译器的实现 词法分析器(Lexer)工具(Flex)安装Flex目标程序&#xff1a;verilog代码Flex程序格式DeclarationsDefinitionsRulesUser subroutines如何通过flex读入文件&#xff1f; 完整程序编译&a…

最小生成树(算法篇)

算法之最小生成树 最小生成树 概念&#xff1a; 最小生成树是一颗连接图G所有顶点的边构成的一颗权最小的树&#xff0c;最小生成树一般是在无向图中寻找。最小生成树共有N-1条边(N为顶点数)。 算法&#xff1a; Prim算法 概念&#xff1a; Prim(普里姆)算法是生成最小生…

每天两道Java面试题(一)

1、this关键字和super关键字的区别及联系 this关键字用在本类中。 在类的内部&#xff0c;可以在任何方法中使用this引用当前对象。 this关键字是用来解决全局变量和局部变量之间的冲突。 this()可以调用同类中重载的构造方法&#xff0c;并且需要放在第一行。 super关键字…

Unity入门之重要组件和API(3) : Transform

前言 Transform类主要处理游戏对象(GameObject)的位移、旋转、缩放、父子关系和坐标转换。 1.位置和位移 1.1必备知识点&#xff1a;Vector3 Vector3 主要用来表示三维坐标系中的一个点或者一个向量。 【声明】 Vector3 v1 new Vector3(); Vector3 v2 new Vector3(10, 10…

ScrapySharp框架:小红书视频数据采集的API集成与应用

引言 随着大数据时代的到来&#xff0c;数据采集成为了互联网企业获取信息的重要手段。小红书作为一个集社交和电商于一体的平台&#xff0c;其丰富的用户生成内容&#xff08;UGC&#xff09;为数据采集提供了丰富的资源。本文将介绍如何使用ScrapySharp框架进行小红书视频数…

对话AI原生 | 千帆AppBuilder重构企业AI原生应用开发体验

人工智能和大模型正在引领当前最重要的科技创新趋势。在过去的一年中&#xff0c;行业关注点已从大模型研发转向实际应用&#xff0c;正成为推动创新和转型的关键力量。百度智能云千帆AppBuilder作为基于大模型的企业级AI原生应用开发工作台&#xff0c;支持应用的快速开发和发…

便携式气象站的应用领域

在气象观测的广阔天地中&#xff0c;便携式气象站不仅集便携性、多功能性和高精度于一身&#xff0c;还以其快速部署、实时监测和数据传输等特点&#xff0c;在科研教学、环境监测、农业生产和灾害预警等多个领域发挥着重要作用。 便携式气象站的基本概念 便携式气象站&#…

高智能土壤养分检测仪:农业生产的科技新助力

在科技日新月异的今天&#xff0c;农业领域也迎来了革命性的变革。其中&#xff0c;高智能土壤养分检测仪作为现代农业的科技新助力&#xff0c;正逐渐改变着传统的农业生产方式&#xff0c;为农民带来了前所未有的便利与效益。 高智能土壤养分检测仪&#xff0c;是一款集高科技…