刷野打怪上王者·C++篇·第8期·运算操作

一个简单的Visual C++回合制游戏,完整源码展示 Visual+C++编写的一个回合制游戏演示源码,源码编译环境为vs2010,希望能和大家一起交流,共同学习,共同进步。请注意,要运行生成的EXE文件,请先将EXE文件从Debug目录中拷出来,放到上一级与图像文件同级的目录下。 3d视角,时间设定从石器时代一直到未来,c++开发,同时支持 Direct3D 和 OpenGL 图形引擎,可在 2D 和 3D 模式中切换,探索这个新世界,... 阅读详情

参考链接

RUNOOB.COM

运算操作

    上几篇已经讲了C++中变量和数据存储,后面我们将讲对里面的数据进行操作需要C++提供了哪些运算符。C++中常见的运算符:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、杂项运算符。

算术运算符:包括+(加)、-(减)、*(乘)、/(除)、++(自加)、--(自减)。下面我们通过程序来进行说明:

#include <iostream>

using namespace std;
int main()
{
	float iVar1 = 1, iVar2 = 2;
	int tmpVar;

	cout << "iVar1 + iVar2 = " << iVar1 + iVar2 << endl; //加
	cout << "iVar1 - iVar2 = " << iVar1 - iVar2 << endl; //减
	cout << "iVar1 * iVar2 = " << iVar1 * iVar2 << endl; //乘
	cout << "iVar1 / iVar2 = " << iVar1 / iVar2 << endl; //除(除数和被除数都是两个浮点型型)
	iVar1--;                                             //相当于 iVar1 = iVar1 - 1;
	cout << "iVar1 -- =" << iVar1 << endl;                //自减
	iVar2++;                                            //相当于 iVar2 = iVar2 + 1;
	cout << "iVar2 -- =" << iVar2 << endl;               //自加

	/*特别说明*/
	int iTestVar1 = 2, iTestVar2 = 3;
	float  fTestVar1 = 3;
	cout << "iTestVar1 / iTestVar2 = " << iTestVar1 / iTestVar2 << endl; //除(除数和被除数都是两个整型)
	cout << "iTestVar1 / fTestVar1 = " << iTestVar1 / fTestVar1 << endl; //除(除数是整型,被除数是浮点型)
	cout << "fTestVar1 / iTestVar2 = " << fTestVar1 / iTestVar1 << endl; //除(除数是整型,被除数是浮点型)
	getchar();
}

运行结果

iVar1 + iVar2 = 3
iVar1 - iVar2 = -1
iVar1 * iVar2 = 2
iVar1 / iVar2 = 0.5
iVar1 -- = 0
iVar2 -- = 3
iTestVar1 / iTestVar2 = 0
iTestVar1 / fTestVar1 = 0.666667
fTestVar1 / iTestVar2 = 1.5

 注:请注意上面程序中的特别部分,在除法中一个为整型和一个为浮点型,他们的结果为浮点型;如果两个为整型,则除法的结果为整型

关系运算符:其实就是比较判别式两边的大小,主要包括:>(大于)、<(小于)、==(等于)、!=(不等于)、>=(大于等于)、<=(小于等于)。下面我们通过程序来进行说明:

#include <iostream>

using namespace std;
int main()
{
	float iVar1 = 1, iVar2 = 2;
	
	if(iVar1 > iVar2)
		cout << "iVar1 大于 iVar2 " << endl; 
	else if(iVar1 < iVar2)
		cout << "iVar1 小于 iVar2 " << endl; 
	else if (iVar1 == iVar2)
		cout << "iVar1 等于 iVar2 " << endl; 
	else if (iVar1 != iVar2)
		cout << "iVar1 不等于 iVar2 " << endl; 
	else if (iVar1 <= iVar2)
		cout << "iVar1 小于等于 iVar2 " << endl; 
	else if (iVar1 >= iVar2)
		cout << "iVar1 大于等于 iVar2 " << endl;
	getchar();
}

运行结果

iVar1 小于 iVar2

注:改变变量的数值,可以测试其它运算符。这里的if语法我们先不要考虑,后面会继续讲。

逻辑运算符:主要有三个逻辑运算符,&&逻辑与(A与B同时为真才表示真)、||逻辑或(A与B只要有一个为真就表示真)、!逻辑非(A为真,!A则为假;反之,A为假,!A则为真)。下面我们通过程序来进行说明:

#include <iostream>

using namespace std;
int main()
{
	float iVar1 = 0, iVar2 = 2;

	if (iVar1 && iVar2)
		cout << "iVar1 && iVar2 " << endl;
	if (iVar1 || iVar2)
		cout << "iVar1 || iVar2 " << endl;
	if (!iVar1)
		cout << "!iVar1" << endl;
	if (!iVar2)
		cout << "!iVar2 " << endl;
	getchar();
}

运行结果

iVar1 || iVar2
!iVar1

注:在C++中,只有当变量对应的存储值为0时,才表示假;其它则为真。

位运算符:主要是对字节中的字符进行操作,包括&按位与、|按位或、^按位异或、~按位取反、<<左移、>>右移。

pqp&qp|qp^q~p
000001
010111
100110
111100

 

下面讲一下左移和右移,先假设A和B分别为12和13:

A = 0000 1100

B = 0000 1101

A<<2 = 0011 0000 (对应48)

B<<2 = 0011 0100(对应52)

赋值运算符:其实赋值运算符简单的就是一个=,但是因为存在一些符合性的操作,所以符合操作运算符包括:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=,这些操作其实就是变量先进行等号左边对应的运算,然后在赋值给自身。使用方法

A *= B; 等同于 A = A * B;  //其它方法以此类推

杂项运算符:这个其实算一些数据访问的方式,包括:sizeof、Condition ? X : Y、,(逗号)、.(点)和 ->(箭头)(这个主要用在结构体体,后面会讲解)、强制类型转换、&、*。通过代码来展示一下:

#include <iostream>

using namespace std;
int main()
{
	//sizeof
	int iVar1 = 1, iVar2 = 2;     //逗号,顺序执行一系列操作
	cout << sizeof(iVar1) << endl; //返回int的占位符

	int iVar = (iVar1 > iVar2) ? iVar1 : iVar2; //条件为真,输出iVar1;反之,iVar2
	cout << "(iVar1 > iVar2) ? iVar1 : iVar2 = " << iVar << endl; //返回int的占位符

	int *iPointVar = &iVar2;    //取iVar2变量的地址
	cout << "*iPointVar = " << *iPointVar << endl; //取iPointVar地址对应的存储值

	float fVar = 4.123;    //浮点型变量
	cout << "int(fVar) = " << int(fVar) << endl; //强制类型转化为整型

	getchar();
}

运行结果

4
(iVar1 > iVar2) ? iVar1 : iVar2 = 2
*iPointVar = 2
int(fVar) = 4

注:在数据进行运算操作中,肯定会遇到运算优先级高低的问题,这个只要记住就可以,不是很清楚的时候,最简单的方法就是添加括号。下面给出表格,大家自己简单记一下就可以:

更多《计算机视觉与图形学》知识,可关注下方公众号:

 

VC++开发的小游戏 打怪升级 这个游戏加上ui就很棒了,供大家参考学习 立即下载

相关推荐

C++实现生命游戏控制台运行

C++实现生命游戏控制台运行C++实现生命游戏控制台运行C++实现生命游戏控制台运行C++实现生命游戏控制台运行

c++游戏编程初步(超简单)教学

·学了编程干什么?做题?做计算? NONONONONO~~~; 已经学了简单的编程,不做一些小游戏怎么行? 今天,我们就来了解一下关于做小游戏的技巧以及其中使用的函数; (本教程面向会循环嵌套,分支,一维数组,多重分支的人,如果不会请自行回避) 本次提供的是一个找宝藏的游戏(也就是宝藏隐藏在某个地方,然后用键盘wasd操控主人物寻找的游戏,虽然没有任何玩的意义~~(如果有应该是5岁小孩玩的。。。。...

weixin_44578201的博客 3万+

AI辅助游戏开发实战:Kimi K3提升Unity开发效率与代码质量

在游戏开发领域,有限状态机(FSM)是构建角色AI行为逻辑的核心设计模式,它通过定义明确的状态和转换条件,使游戏实体能够智能地响应环境变化。其原理在于将复杂的行为分解为离散的状态节点,并通过事件驱动状态切换,从而实现清晰、可维护的AI架构。这项技术的价值在于显著提升了游戏角色的行为真实感和开发效率,被广泛应用于NPC行为控制、角色动画管理、UI流程等场景。随着AI编程助手的兴起,开发者现在可以借助如Kimi K3这类工具,通过自然语言指令快速生成和优化FSM等复杂系统的代码框架,将更多精力投入到核心玩法与性

weixin_30430677的博客 411

C++ 控制台 升级打怪小游戏

小游戏介绍:输入“勇士”生日,判断“勇士”星座,给出“勇士”的初始化属性(体力、智力和敏捷)。菜单栏有2个功能"查看状态”和“任务选择”。“查看状态”可以显示“勇士”的基本属性。“任务选择”可以选择“勇士”要做的任务,提升属性。 部分代码:(需要完整代码可在评论下发邮箱) int main() { //1.取名 /*boss名字*/ string value_boss_name; ...

酷小川的博客 8809

MTK6769平台Type-C充电全解析:从硬件管脚到PD协议实战(Android15环境)

本文深入解析了MTK6769平台在Android 15环境下Type-C充电的完整链路。从硬件管脚(特别是核心的CC引脚)功能与连接,到USB-PD协议报文抓取与实战分析,并结合MTK平台PD芯片驱动与充电IC驱动的软件框架,提供了从硬件设计到软件调试的系统性解决方案和常见问题排查案例。

ol78901234的博客 312

Spring Boot Admin 完整教程

SpringBootAdmin是一个用于管理和监控SpringBoot应用的Web工具,提供健康检查、性能指标、日志管理等核心功能。系统由AdminServer(管理服务器)和AdminClient(客户端)组成,通过Actuator端点收集数据。配置需添加Maven/Gradle依赖,通过@EnableAdminServer注解启动服务端,客户端需配置注册信息。支持UI自定义、安全认证(基本/OAuth2)、多种通知方式(邮件/Slack)及与Eureka/Consul等服务发现的集成。最佳实践包括分层监

weixin_51040479的博客 2558

刷野打怪上王者·C++篇·第27期·总结

刷野打怪上王者·C++篇·第26期·时间函数&预处理 刷野打怪上王者·C++篇·第25期·动态内存处理 刷野打怪上王者·C++篇·第24期·信号处理 刷野打怪上王者·C++篇·第23期·标准流输入输出 刷野打怪上王者·C++篇·第22期·多线程处理 刷野打怪上王者·C++篇·第21期·模板处理 刷野打怪上王者·C++篇·第20期·命名空间 刷野打怪上王者·C++篇·第19期·...

CSS360的博客 1617

模拟电路综合笔试题解析

本专栏预计更新60期,当前为第10期,文章约6000字,旨在帮助读者掌握模拟电路笔试的核心知识点与实战技巧。文章分为五个章节,涵盖基础理论、高频考点、大厂题目解析等内容。首先,文章详细解析了DC-DC与LDO的区别及选型依据,并通过真题分析帮助读者理解其应用场景。接着,文章深入探讨了运放电路设计、同步降压电路设计等高频考点,并结合实际案例提供解决方案。此外,文章还分享了特斯拉、华为、大疆等大厂的面试题及解析,帮助读者应对复杂电路设计挑战。最后,文章总结了模拟电路设计中的关键技巧与优化方法,为读者提供全面的笔

启芯硬件的博客 473

刷野打怪上王者·C++篇·第7期·数据存储

参考链接 RUNOOB.COM 数据存储类说明 在编程过程需要限制和扩大函数以及变量的作用域(关于作用域上一篇已经提到点),需要一些特定的类来进行修饰。为实现上面的功能,C++定义了存储类。C++程序中使用的存储类:auto,register,static,extern,mutable,thread_local。 但是随着C++版本的更新,从C++17开始,aut...

CSS360的博客 842

杰理JL701N内置flash录音配置教程

本文详细介绍了内置Flash录音功能的配置方法。主要内容包括:1) 基础模式配置(开启音乐/录音模式、Flash录音宏定义);2) 录音参数设置(格式基准值、存储区域定义、容量配置);3) MP3编码特殊处理;4) 下载时的Flash格式化操作;5) 录音开关和播放接口的使用说明。配置过程涉及多个关键文件的修改,并强调存储容量的精确分配。

qq_42014563的博客 599

外部PLC触发VisionMaster多流程运行

上一讲,介绍了海康VisionMaster与西门子PLC1200进行S7通信。在前一讲的基础上,讲解如何通过PLC触发,实现VisionMaster的多流程运行。

haier123888的博客 4654

刷野打怪上王者·C++篇·第9期·判断&循环

参考链接 RUNOOB.COM 判断 在判断语句中主要有两种:if...else和switch两个语句。下面我们还是主要通过代码来说明: 先看一看看if...else语句: #include <iostream> using namespace std; int main() { float iVar1 = 1, iVar2 = 2; if(iVar1 > ...

CSS360的博客 298

windsurf中出现无法Connecting to server的解决方案

本文主要介绍了windsurf中出现无法Connecting to server的解决方案,希望能对使用windsurf的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 6万+

从零到英雄:华为OD机试C卷备考全攻略与实战技巧

本文提供华为OD机试C卷的全面备考指南,涵盖从零基础到高分的实战技巧。重点解析双机位考试流程、高频考点分布及高效刷题方法,帮助考生掌握算法思维与编程基本功。特别推荐Python作为首选语言,并分享动态规划、DFS等核心算法的突破路径,助力考生顺利通过机试。

n8m7b6v5c4的博客 646

激光打标轴坐标计算分析

‌:基于坐标差的平方和开方运算,勾股定理将几何关系转化为代数计算,从而实现了从坐标到距离的精确转换‌12。直角三角形的应用从上图可以看到A,B,P三个点连起来就是一个直角三角形了。用勾股定理计算距离 C#有相关的方法直接传参数就可以了。很方便。

StevenChen的博客 312

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【180620】Visual C++回合制游戏demo源码

Visual+C++编写的一个回合制游戏演示源码,源码编译环境为vs2010,希望能和大家一起交流,共同学习,共同进步。请注意,要运行生成的EXE文件,请先将EXE文件从Debug目录中拷出来,放到上一级与图像文件同级的目录下。源码下载地址:点击下载备用下载地址:点击下载...

资源小站 2610

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【游戏开发】C++游戏编程实例

网络游戏开发分为:服务器编程、客户端编程、人工智能、数据库管理、游戏策划、美工设计、音乐特效等。 大型游戏往往需要团队合作开发,因此面向对象的编程思想在网络游戏中得到了广泛应用。 游戏开发基本流程:游戏初始化——游戏实现——游戏结束。 游戏初始化:加载游戏内容的缓存,如游戏人物、背景模型、音乐等素材,并初始化相关参数。 游戏实现:用户操作+游戏逻辑过程+游戏内容渲染。 游戏结束:释放游戏...

茗染云华 荆挑赋樱 4万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

打怪小游戏(C++实现)

废话少说 看代码: #include &lt;iostream&gt;  using namespace std;  double shengmingli=200;//定义主角初始生命力  int gongjili=10;//定义主角初始攻击力  int fangyuli=20;//定义主角初始防御力  int money=200;//定义主角初始金钱数量  bool guogua...

acdsxzsdaffvgscds的博客 2万+

完美世界2017C++游戏开发笔试编程题

第一题题意:给出一个序列a,需要找到一对位置(i, j)(j > i),使得a[j] - a[i]的值尽量大,同时i尽量大并且j尽量小,如果任意a[j] - a[i]都<=0,则输出-1,-1。 题解:从1到n扫一遍序列处理即可,i尽量大用>=,j尽量小用>即可。 代码:#include <cstdio> #include <iostream> using namespace std; #def

mysterious 3640

c++ 实现小游戏 夺宝奇兵

#ifndef _GAME_H_ #define _GAME_H_ #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;iomanip&gt; #include &lt;string&gt; #include &lt;Windows.h&gt; #include &lt;conio.h&gt; #define N 10 ...

u011041349的专栏 1966

c++小游戏——2048

#include <stdio.h> #include <time.h> #include <conio.h> #include <windows.h> void start_game(); void reset_game(); void move_left(); void move_r...

ShineEternal的笔记小屋 538

C++游戏

Windows下: API:win32API GDI GID+ SDK: MFC C++能做什么: 桌面应用程序; 游戏;创建窗口1.设计一个窗口类; WNDCLASSEXW //标准窗口类 WNDCLASSEXW wndClass={0}; wnd.style=CS_HREDRAW|CS_VREDRAW|CS_ 2.注册一个窗口类; 3.创建一个窗口; 4.显示窗口和更新窗

LC900730的博客 1224
上一篇: 刷野打怪上王者·C++篇·第7期·数据存储
下一篇: 刷野打怪上王者·C++篇·第9期·判断&循环
元宇宙MetaAI
博客等级 码龄10年 331粉丝 333原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值