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

目录

吃星星(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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小红薯视频作品一键克隆,解放双手自动搬运【永久脚本+使用教程】

软件介绍&#xff1a; 小红薯作品搬运神器&#xff0c;软件只需要复制对方的作品链接即可一键克隆搬运到自己的小红书上&#xff0c;再也不用手动去复制粘贴了&#xff0c;批量起号搬运必备神器 设备需求&#xff1a; 电脑 链接&#xff1a;https://pan.baidu.com/s/11MzBqER…

15集合的应用

集合的概念 集合是一个容器&#xff0c;可以容纳其他类型的数据&#xff0c;前面所讲的数组就是一个集合。 所有的集合相关的类和接口都在java.util包下 特点 集合不能直接存储基本数据类型(但是代码上不需要体现&#xff0c;因为Java中有自动装箱)另外集合不能直接存储Java…

数据结构-栈的讲解

栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底&#xff08;因为先进后出&#xff09;。栈中的数据元素遵守后进先出LIFO&#xff08;Last In Firs…

Python GraphQL服务器实现库之tartiflette使用详解

概要 Tartiflette是一个为Python编写的GraphQL服务器实现,它建立在现代异步编程库如asyncio之上,提供了高性能的GraphQL执行环境。Tartiflette专注于提供最佳的开发者体验,支持最新的GraphQL特性。 安装 安装Tartiflette相对简单,但需要依赖于一些系统级的库。 首先,需…

【话题】软件开发的航海图:程序员的实用神器探秘

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 背景一、代码编写二、版本控制三、测试与调试四、部署与运维五、总结文章推荐 背景 在软件开发的广阔海洋中&#xff0c;每一位程序员都是一位勇敢的航海家&#xff0c…

基于STM32F401RET6智能锁项目(AT24C0X存储芯片)

一、IIC基本介绍 1、IIC通信接口 • I2C&#xff08;Inter IC Bus&#xff09;是由Philips公司开发的一种通用数据总线 • 两根通信线&#xff1a;SCL&#xff08;串行时钟线&#xff09;、SDA&#xff08;串行数据线&#xff09; • 同步&#xff0c;半双工 • 带数据应答 •…

Java后端的接口参数两个interger 类型情况解决

get请求 &#xff0c;对应请求头 RequestParm, post请求&#xff0c; 对应请求体 &#xff0c;RequestBody 两个Integer参数情况 GetMapping("/insertStaffClass")public R<Void> insertStaffClass(RequestParam Integer staffId,RequestParam List<Integ…

C++ | Leetcode C++题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; class Solution { public:void sortColors(vector<int>& nums) {int n nums.size();int p0 0, p2 n - 1;for (int i 0; i < p2; i) {while (i < p2 && nums[i] 2) {swap(nums[i], nums[p2]);--p2;}if (nums[i…

python跟C++选哪个?

选择使用Python还是C取决于你的具体需求和项目背景。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 在通信工程行业…

centos7安装zabbix-server

zabbixan-server安装 环境安装zabbix安装zabbix配置apachezabbix-UI前端配置修改zabbix为中文语言 环境 准备&#xff1a; centos7系统、mysql数据库/MariaDB数据库 mysql数据库可参照&#xff1a;https://blog.csdn.net/weixin_61367575/article/details/138774428?spm1001.…

Java(三)---逻辑控制

文章目录 前言1.逻辑控制语句的分类1.顺序结构2.分支结构2.1.if结构2.1.1.if...else语句2.2.2.if ... else if... else语句 2.2.switch语句 3.循环结构3.1.while3.2.break3.3.continue3.4.for循环3.5.do while循环 4.输入输出4.1.输入到控制台4.2.从键盘输入 前言 前两篇文章&…

EfficientNet网络结构详细解读+SE注意力机制+pytorch框架复现

文章目录 &#x1f680;&#x1f680;&#x1f680;前言一、1️⃣ 网络详细结构1.1 &#x1f393; MBConv结构1.2 ✨SE注意力机制模块1.3 ⭐️Depthwise Separable Convolution深度可分离卷积1.3.1 普通卷积操作(Convolution)1.3.2 逐深度卷积&#xff08;Depthwise Convoluti…

安全测试|常见SQL注入攻击方式、影响及预防

SQL注入 什么是SQL注入&#xff1f; SQL注入是比较常见的网络攻击方式之一&#xff0c;主要攻击对象是数据库&#xff0c;针对程序员编写时的疏忽&#xff0c;通过SQL语句&#xff0c;实现无账号登录&#xff0c;篡改数据库。 SQL注入简单来说就是通过在表单中填写包含SQL关键…

论文笔记:仅一个进程故障就无法达成共识

仅一个进程故障就无法达成共识 仅一个进程故障指的是在异步的分布式系统中 摘要 异步系统的共识问题&#xff08;consensus&#xff09;涉及一组进程&#xff0c;其中有的进程可能不可靠&#xff08;unreliable&#xff09;。共识问题要求可靠的进程一致地从两个侯选中决定&…

制造业如何挖掘数据价值,附数据分析处理软件推荐

制造业如何挖掘和利用数据价值&#xff1f; 在信息化、智能化高速发展的今天&#xff0c;制造业正迎来一场由数据驱动的深刻变革。数据&#xff0c;作为这场变革的核心驱动力&#xff0c;正被制造业企业深度挖掘和利用&#xff0c;以实现更高效、更智能的生产模式。 制造业在利…

【IP证书】公网IP地址SSL证书怎么获取和安装

一、获取SSL证书 1、选择支持IP证书的CA&#xff1a; 选择一个支持为IP地址颁发SSL证书的证书颁发机构&#xff0c;如JoySSL。 2、准备验证信息&#xff1a; 确保您的公网IP地址是可访问的&#xff0c;并准备好相关的组织信息或IP地址所有权证明&#xff0c;具体取决于CA的…

Goby 漏洞发布|瑞友天翼应用虚拟化系统 /hmrao.php SQL注入漏洞

漏洞名称&#xff1a;瑞友天翼应用虚拟化系统 /hmrao.php SQL注入漏洞 English Name&#xff1a; Ruiyou-Tianyi-App-Virtualization-Delivery-Platform /hmrao.php SQL Injection Vulnerability CVSS core: 9.8 影响资产数&#xff1a;75202 漏洞描述&#xff1a; 瑞友天…

揭秘 HTTP 代理:增强在线活动的安全性和匿名性

HTTP 代理在保护您的在线隐私、增强安全性以及允许访问受限内容方面发挥着关键作用。了解 HTTP 代理的工作原理以及如何有效地利用它们可以让您掌控自己的在线状态和浏览体验。让我们深入研究 HTTP 代理的世界&#xff0c;探索它们的优势、应用程序以及最大化其效用的最佳实践。…

基于SSM SpringBoot vue学校办公自动化系统

基于SSM SpringBoot vue学校办公自动化系统 系统功能 登录注册 个人中心 用户信息管理 部门信息管理 公共通知管理 个人邮箱管理 日常安排管理 管理员管理 签到记录管理 会议管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: SSM(Spring SpringMVC Mybaits)或Spr…

1Panel应用推荐:Uptime Kuma

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…