DEV--C++小游戏(吃星星(0.5))

news2024/11/22 20:11:39

目录

吃星星(0.5)

该版本简介

DEV--C++小游戏(吃星星(0.1)) 

DEV--C++小游戏(吃星星(0.2)) 

分部代码

头文件

命名空间+变量(增)

副函数(新,增)

清屏函数

打印地图函数(增)

移动函数

选择颜色函数

随机选一个颜色并输出星星(改)

去到指定位置并输出函数(新)

隐藏光标函数(新)

'我'的颜色函数

选蓝色或绿色

碰到星星函数(新)

输出+初始化(新)

游戏主体函数

主函数

0.5版完整代码

byebye



吃星星(0.5)

版本<1表示还未完全完成


该版本简介

经过

DEV--C++小游戏(吃星星(0.1)) 

DEV--C++小游戏(吃星星(0.2)) 

以及粉丝们的支持

我加班加点,造出了0.5版

比以前有着巨大大改变:

先看图片:

  1. 增加了颜色选取
  2. 增加了得分
  3. 隐藏了光标
  4. 星星随机位置
  5. 'I'可以吃星星
  6. 星星被吃可增加得分,移动到地图随机位置
  7. 增加了对行列的限制(5~20)防止刷分
  8. 可以算作一个正常游戏,但缺少开头结尾

以上就是表面上能看到的东西

现在来看看代码吧!!!!!


分部代码

头文件

#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>

不万能的万能头

按键式输入头文件

颜色窗口等头文件


命名空间+变量(增)

using namespace std;
int x,y,n,m,color,wx,wy,cc=-1,fen;
char a[100][200],w='*',c;

命名空间

地图大小(n,m),‘I’的坐标(x,y),颜色,星星坐标,颜色,得分

地图,输入变量,星星


副函数(新,增)

清屏函数
void cls()
{
	system("cls");
}

清除屏幕上所有东西


打印地图函数(增)
void p1()
{
	printf("该版本为:吃星星(0.5)\n");
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(i==wx&&j==wy)q1();
			if(i==x&&j==y)i1();
			if(!(((i==wx&&j==wy)||(i==x&&j==y))))printf("%c",a[i][j]);
		}
		printf("\n");
	}
	gotoxy(m,1);
	printf("得分:%d",fen); 
}

打印版本+地图+地图中随机颜色的星星+地图中的我


移动函数
void yd()
{
	(c=='a'&&y>0)?a[x][--y]='I',a[x][y+1]='x':0;
	(c=='d'&&y<m-1)?a[x][++y]='I',a[x][y-1]='x':0;
	(c=='w'&&x>0)?a[--x][y]='I',a[x+1][y]='x':0;
	(c=='s'&&x<n-1)?a[++x][y]='I',a[x-1][y]='x':0;
	if(int(c)==27)exit(0);
}

w,a,s,d,Esc键的判断是否按下


选择颜色函数
void colorchoose(int color)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);
}

定义一个颜色,并实现输出使用这个颜色


随机选一个颜色并输出星星(改)
void q1()
{
	color=rand()%255+0;
	colorchoose(color);
	printf("%c",w);
	colorchoose(cc);
}

随机选一个颜色

实现这个颜色

输出星星

颜色变回来(变成背景颜色)


去到指定位置并输出函数(新)
void gotoxy(int x,int y)
{
	HANDLE hOutput;
	COORD loc;
	loc.X=x;
	loc.Y=y;
	hOutput=GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hOutput,loc);
}

去到(x,y),并输出东西


隐藏光标函数(新)
void yc()
{
	CONSOLE_CURSOR_INFO cursor_info={1,0};
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}

将光标隐藏


'我'的颜色函数
void i1()
{
	if(cc/16*16+10!=cc)color=cc/16*16+10;
	else color=cc/16*16+9;
	colorchoose(color);
	char ch='I';
	printf("%c",ch);
	colorchoose(cc);
}
选蓝色或绿色

碰到星星函数(新)
void q2()
{
	if(wx==x&&wy==y)
	{
		while(wx==x&&wy==y)
		{
			wx=rand()%n+0;
			wy=rand()%m+0;
		}
		fen++;
	}
}

如果‘我’碰到星星

将星星随机到一个位置,但不能是‘我’的位置

得分+1


输出+初始化(新)
void in_chu()
{
	srand(time(0));
	system("mode con cols=150 lines=40");
	while(!((n>=5&&n<=20&&m>=5&&m<=20&&cc>=0&&cc<=255)))
	{
		cls();
		printf("行数(5~20):");
		scanf("%d",&n);
		printf("列数(5~20):");
		scanf("%d",&m);
		printf("颜色(0~255):"); 
		scanf("%d",&cc);
	}
	memset(a,'x',sizeof(a));
	x=n/2;
	y=m/2;
	cls();
}

设置随机种子

调整窗口至40*150(长*宽)

输入长、宽、颜色,并保持合理

将a所有字符都设为‘x’

'我'的坐标(n/2(x),m/2(y))

清屏


游戏主体函数
void game()
{
	yc();
	p1();
	c=getch();
	cls();
	yd();
	q2();
}

隐藏光标

打印地图

获取移动方向

清屏

移动

星星有没有别吃到


主函数

int main()
{
	in_chu();
	while(1)game();
}

输入并初始化

开始游戏

0.5版完整代码

#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>
using namespace std;
int x,y,n,m,color,wx,wy,cc=-1,fen;
char a[100][200],w='*',c;
void gotoxy(int x,int y)
{
	HANDLE hOutput;
	COORD loc;
	loc.X=x;
	loc.Y=y;
	hOutput=GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hOutput,loc);
}
void yc()
{
	CONSOLE_CURSOR_INFO cursor_info={1,0};
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void colorchoose(int color)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);
}
void q1()
{
	color=rand()%255+0;
	colorchoose(color);
	printf("%c",w);
	colorchoose(cc);
}
void q2()
{
	if(wx==x&&wy==y)
	{
		while(wx==x&&wy==y)
		{
			wx=rand()%n+0;
			wy=rand()%m+0;
		}
		fen++;
	}
}
void i1()
{
	if(cc/16*16+10!=cc)color=cc/16*16+10;
	else color=cc/16*16+9;
	colorchoose(color);
	char ch='I';
	printf("%c",ch);
	colorchoose(cc);
}
void cls()
{
	system("cls");
}
void p1()
{
	printf("该版本为:吃星星(0.5)\n");
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
		{
			if(i==wx&&j==wy)q1();
			if(i==x&&j==y)i1();
			if(!(((i==wx&&j==wy)||(i==x&&j==y))))printf("%c",a[i][j]);
		}
		printf("\n");
	}
	gotoxy(m,1);
	printf("得分:%d",fen); 
}
void in_chu()
{
	srand(time(0));
	system("mode con cols=150 lines=40");
	while(!((n>=5&&n<=20&&m>=5&&m<=20&&cc>=0&&cc<=255)))
	{
		cls();
		printf("行数(5~20):");
		scanf("%d",&n);
		printf("列数(5~20):");
		scanf("%d",&m);
		printf("颜色(0~255):"); 
		scanf("%d",&cc);
	}
	memset(a,'x',sizeof(a));
	x=n/2;
	y=m/2;
	cls();
}
void yd()
{
	(c=='a'&&y>0)?a[x][--y]='I',a[x][y+1]='x':0;
	(c=='d'&&y<m-1)?a[x][++y]='I',a[x][y-1]='x':0;
	(c=='w'&&x>0)?a[--x][y]='I',a[x+1][y]='x':0;
	(c=='s'&&x<n-1)?a[++x][y]='I',a[x-1][y]='x':0;
	if(int(c)==27)exit(0);
}
void game()
{
	yc();
	p1();
	c=getch();
	cls();
	yd();
	q2();
}
int main()
{
	in_chu();
	while(1)game();
}

我会尽快更新

敬请期待!!!!!

byebye

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

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

相关文章

d18(169-174)-勇敢开始Java,咖啡拯救人生

目录 特殊文件 .properties 属性文件 读取属性文件 写出属性文件 .xml XML文件 读取XML文件 ​编辑 写出XML文件 约束XML文件 日志技术 Logback 日志级别 特殊文件 .properties 属性文件 每行都是一个键值对 键不能重复 文件后缀一般是.properties 读取属性文件 …

记录一下 log4j的漏洞

目录 背景 bug的产生 bug复现 JNDI 网络安全学习路线 &#xff08;2024最新整理&#xff09; 学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明&#xff1a; 背景 log4j这次的bug&#xff0c;我相信大家都已经知道了&#xff0c;仅以…

OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析

OpenSSL自签证书并基于Express搭建Web服务进行SSL/TLS协议分析 起因 最近在学习安全协议&#xff0c;大多数实验都是基于Windows下IIS&#xff0c;或者Linux下nginx搭建的Web服务&#xff0c;搭建环境和编写配置文件比较麻烦。而且我有多个不同环境的设备&#xff0c;折腾起来…

使用Dockerfile配置Springboot应用服务发布Docker镜像-16

创建Docker镜像 springboot-docker模块 这个应用可以随便找一个即可&#xff0c;这里不做详细描述了。 pom.xml 依赖版本可参考 springbootSeries 模块中pom.xml文件中的版本定义 <dependencies><dependency><groupId>com.alibaba.cloud</groupId>…

EasyExcel导出Excel文件——合并单元格多层级数据导出

合并单元格多层数据导出 思维脑图 代码实现 /*** 导出所有信息** param request 请求体*/ Override public void getWilliamExportList(WilliamReqVo request, HttpServletResponse response) throws Exception {List<SysDictData> dataByType dictDataService.getDic…

添砖Java之路(其五)——封装,String,StringBuilder类。

封装&#xff1a; 封装意义&#xff1a;更好的维护数据&#xff0c;让使用者无需关心如何使用&#xff0c;只需要知道怎么使用。 Java Bean&#xff1a; 然后我们要知道Java Bean(实体类)标准。 1.对于这个类的成员都需要设为私有&#xff0c;而且要对外提供相应Get,Set的接…

WWW服务器搭建(1)——HTTP协议原理篇

目录 一、WWW的相关概念 1.1 WWW的定义 1.2 超文本标记语言HTML 1.3 统一资源定位符URL 1.4 超文本传输协议HTTP 二、HTTP协议工作过程 2.1 DNS解析 2.2 TCP连接过程 2.3 HTTP 请求与响应 2.4 TCP连接断开 三、HTTP请求报文格式 3.1 请求行 3.2 请求头 3.3 空行 …

大语言模型的数据预处理

文章目录 质量过滤敏感内容过滤数据去重 当收集了丰富的文本数据之后&#xff0c;为了确保数据的质量和效用&#xff0c;还需要对数据进行预处理&#xff0c;从而消除低质量、冗余、无关甚可能有害的数据。一般来说&#xff0c;需要构建并使用系统化的数据处理框架&#xff08;…

第十五节:贪心算法(下)

一 、 贪心算法的解题套路实战一&#xff08;最多的会议宣讲场次&#xff09; 1.1 描述 一些项目要占用一个会议室宣讲&#xff0c;会议室不能同时容纳两个项目的宣讲。 给你每一个项目开始的时间和结束的时间 你来安排宣讲的日程&#xff0c;要求会议室进行的宣讲的场次最多。…

校园志愿者管理系统带万字文档

文章目录 校园志愿者管理系统一、项目演示二、项目介绍三、10000字论文参考四、部分功能页面五、部分代码展示六、底部获取项目源码和万字论文参考&#xff08;9.9&#xffe5;带走&#xff09; 校园志愿者管理系统 一、项目演示 校园志愿者管理系统 二、项目介绍 基于Spring…

快速对比 找出2个名单不同之处

import pandas as pd# 读取两个Excel文件 df1 pd.read_excel(1.xlsx) df2 pd.read_excel(2.xlsx)# 检查两个DataFrame的列是否相同 if list(df1.columns) ! list(df2.columns):print("两个Excel文件的列不一致。")print("文件1的列&#xff1a;", df1.co…

免费思维13招之九:时间型思维

免费思维13招之九:时间型思维 免费思维的另一大战略思维——时间型思维。 什么是时间型思维呢?就是在某一个规定的时间内对消费者进行免费,比如一个月中的某一天,或一周中的某一天或一天中的某一个时间段对消费者进行免费。 就在去年,有一个电影院老板弟子,他的电影院营…

基于SSM的“基于协同过滤的在线通用旅游平台网站”的设计与实现(源码+数据库+文档)

基于SSM的“基于协同过滤的在线通用旅游平台网站”的设计与实现&#xff08;源码数据库文档) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统主界面 景点信息界面 后台界面 部分源码…

设计循环队列-C语言实现

题目描述 设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的…

算法-卡尔曼滤波之为什么要使用卡尔曼滤波器

假设使用雷达来预测飞行器的位置&#xff1b; 预先的假设条件条件: 1.激光雷达的激光束每5s发射一次&#xff1b; 2.通过接受的激光束&#xff0c;雷达估计目标当前时刻的位置和速度&#xff1b; 3.同时雷达要预测下一时刻的位置和速度 根据速度&#xff0c;加速度和位移的…

Spring简介IOCDI

文章目录 Spring简介Spring课程介绍为什么要学学什么怎么学 初识SpringSpring家族Spring发展史 Spring体系结构Spring核心概念目前代码存在的问题核心概念 IOC和DI入门案例IOC入门案例入门案例分析实现步骤实现代码 DI入门案例DI入门案例分析实现步骤实现代码图解演示 Bean的基…

【超详细】跑通YOLOv8之深度学习环境配置3-YOLOv8安装

环境配置3下载安装内容如下&#xff1a; 1、配置清华等镜像源 2、创建环境 3、下载安装Pytorch 4、下载安装YOLOv8运行环境 版本&#xff1a;Python3.8&#xff08;要求>3.8&#xff09;&#xff0c;torch1.12.0cu113&#xff08;要求>1.8&#xff09; 1、配置清华等镜…

用Arm CCA解锁数据的力量

安全之安全(security)博客目录导读 目录 CCA将如何改变Arm架构呢? 在实践中部署CCA 释放数据和人工智能的全部力量和潜力 早期计算中最大的挑战之一是管理计算资源&#xff0c;以最大化计算效率同时提供给不同程序或用户分配资源的分离。这导致了我们今天大多数使用的时间…

Windows环境下代码文档生成工具Doxygen使用详细教程

背景 最近研究aom源码&#xff0c;发现编译需要依赖Doxygen工具&#xff0c;故此篇博客详细记录下Doxygen的安装和使用。 Doxygen Doxygen 是一个强大的源代码文档生成工具&#xff0c;它支持多种编程语言&#xff0c;能够直接从源代码中的注释提取文档&#xff0c;并生成多…

基于SpringBoot设计模式之创建型设计模式·抽象工厂模式

文章目录 介绍开始架构图&#xff08;以穿搭举例&#xff09;样例一&#xff08;html关于列表和表格的应用&#xff09;定义抽象工厂&#xff08;html&#xff09;定义抽象工厂需要制作抽象产物&#xff08;托盘&#xff09;定义具体工厂&#xff08;列表、表格&#xff09;定义…