逻辑函数

[MFC] 高仿Flappy bird 桌面版

谁说我不能喝 提交于 2020-02-11 12:55:48
这是今年年初做的东西,一直没有时间整理,现在拿出来分享下~ 目录 开发背景 开发语言及运行环境 效果展示 游戏框架说明 游戏状态及逻辑说明 经典算法说明 重量级问题解决 开发感想 一、开发背景:   flappy bird由一位来自越南河内的独立游戏开发者阮哈东开发,是一款形式简易但难度极高的休闲游戏。简单但不粗糙的8比特像素画面、超级马里奥游戏中的水管、眼神有点呆滞的小鸟和几朵白云便构成了游戏的一切。你需要不断控制点击屏幕的频率来调节小鸟的飞行高度和降落速度,让小鸟顺利地通过画面右端的通道,如果你不小心擦碰到了通道的话,游戏便宣告结束。   这款虐心的小游戏一经推出,便引起火爆的下载。然后先后出现了各种平台的移植开发:IOS平台PC和手机版、采用HTML5+Canvas及Javascript技术来实现的Flappy Bird电脑版、以网页html5+JS技术完全克隆了原版native app的Web App版、实现了在微信朋友圈和QQ空间中的无缝运行的微信/QQ空间版、WindowsPhone版….但是唯一没有的是直接可在windows操作系统下的单机版,于是当时突发奇想,不如我来填补这个漏洞吧! 二、开发语言及运行环境:    此PC版采用C++的MFC技术在VS2012开发平台下写成,支持windows 7\8环境,XP不知道为啥不行~ 三、效果展示: 四、游戏框架说明:  

机器学习之支持向量机

删除回忆录丶 提交于 2020-02-08 20:31:39
SVM与神经网络 支持向量机并不是神经网络,这两个完全是两条不一样的路吧。不过详细来说,线性SVM的计算部分就像一个单层的神经网络一样,而非线性SVM就完全和神经网络不一样了(是的没错,现实生活中大多问题是非线性的),详情可以参考知乎答案。 这两个冤家一直不争上下,最近基于神经网络的深度学习因为AlphaGo等热门时事,促使神经网络的热度达到了空前最高。毕竟,深度学习那样的多层隐含层的结构,犹如一个黑盒子,一个学习能力极强的潘多拉盒子。有人或许就觉得这就是我们真正的神经网络,我们不知道它那数以百千计的神经元干了什么,也不理解为何如此的结构能诞生如此美好的数据 —— 犹如复杂性科学般,处于高层的我们并不能知道底层的”愚群“为何能涌现。两者一比起来,SVM似乎也没有深度学习等那么令人狂热,连Hinton都开玩笑说SVM不过是浅度学习(来自深度学习的调侃)。 不然,个人觉得相对于热衷于隐含层的神经网络,具有深厚的数学理论的SVM更值得让我们研究。SVM背后伟大的数学理论基础可以说是现今人类的伟大数学成就,因此SVM的解释性也非神经网络可比,可以说,它的数学理论让它充满了理性,这样的理性是一个理工科生向往的。就如,你渴望知道食物的来源以确定食物是否有毒,如果有毒是什么毒,这样的毒会在人体内发生了什么反应以致于让你不适 —— 我的理性驱使我这么想,一个来路不明的食物是不能让我轻易接受的。

改善代码质量的编程规范

China☆狼群 提交于 2020-02-02 01:34:24
《设计模式之美》 改善代码质量的编程规范 一、命名 1.命名长度 命名要准确达意,千万不要有“反正代码是我写的,我明白什么意思,随便起名就可以了”这样的误解,毕竟同事也会看我们的代码。 对于一些长常用的单词,可以用缩写,这样可以保证既等达意又减少了命名的长度。 对于一些作用域小的变量比如函数内的临时变量,可以使用短一些命名,对于作用域大的变量,最好还是用长命名的方式 2.利用上下文简化命名 类的属性可以借助类这个上下文、方法参数可以借助方法这个上下文 3.命名要可读、可搜索 可读是指不要用一些生僻、难发音的单词,这样可以有效减少同事之间的沟通负担 可搜索就是便于根据关键字查类似的方法或变量等,比如查询类方法 输入select或query,这里要注意的是代码风格要一致即查询相关的用了slect就不要用query,反之亦然 4.命名接口和抽象类 接口有两种命名方式 ①接口加前缀“I”,例如接口 IUserService,实现类为UserService ②实现类加后缀“Impl”,例如接口 UserService,实现类为UserServiceImpl 至于选哪种,项目中统一就好 二、注释 1.注释该写的内容 注释的目的是让代码容易看懂,所以注释的内容主要包括:做什么、为什么、怎么做三个部分,对应一些复杂的类和接口,最好也写上如何做即demo 2.注释写的越来越多越好吗?

Java编程的逻辑 (11) - 初识函数

情到浓时终转凉″ 提交于 2020-01-29 21:12:41
本系列文章经补充和完善,已修订整理成书《Java编程的逻辑》,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接 : http://item.jd.com/12299018.html 函数 前面几节我们介绍了数据的基本类型、基本操作和流程控制,使用这些已经可以写不少程序了。 但是如果需要经常做某一个操作,则类似的代码需要重复写很多遍,比如在一个数组中查找某个数,第一次查找一个数,第二次可能查找另一个数,每查一个数,类似的代码都需要重写一遍,很罗嗦。另外,有一些复杂的操作,可能分为很多个步骤,如果都放在一起,则代码难以理解和维护。 计算机程序使用 函数这个概念来解决这个问题,即 使用函数来减少重复代码和分解复杂操作,本节我们就来谈谈Java中的函数,包括函数的基础和一些细节。 定义函数 函数这个概念,我们学数学的时候都接触过,其基本格式是 y = f(x),表示的是x到y的对应关系,给定输入x,经过函数变换 f,输出y。程序中的函数概念与其类似,也有输入、操作、和输出组成,但它表示的一段子程序,这个子程序有一个名字,表示它的目的(类比f),有零个或多个参数(类比x),有可能返回一个结果(类比y)。我们来看两个简单的例子: public static int sum(int a, int b){ int sum = a +

Excel函数基础

谁说胖子不能爱 提交于 2020-01-28 10:38:10
目录 公式与函数基础 1.01 认识公式与函数 1.02 深入理解函数 1.03 公式中的运算符及运算顺序 1.04 单元格的两种引用样式 1.05 相对引用、绝对引用和混合引用 1.06 了解R1C1引用样式的三种引用方式 1.07 跨工作表引用和跨工作簿引用 1.08 引用多个连续工作表中相同区域的方法 1.09 表格结构化引用(了解) 1.10 常用数学统计函数 1.11 IF逻辑判断函数 1.12 IF逻辑判断函数的嵌套 1.13 And Or Not函数 1.14 逻辑值的特殊用法 1.15 常用的IS类判断函数 1.16 4种常见的数据转换函数 1.17 Row函数与Column函数 1.18 在公式中使用名称 1.19 公式中常见的错误值及屏蔽方法 公式与函数基础 1.01 认识公式与函数 公式是以"="开始,通过运算符将常量、函数、参数等按照一定的顺序组合进行数据运算处理的等式。函数是按特定的算法执行计算,并且能产生一个或一组结果,是预先定义好的特殊公式。综上:函数是公式的组成部分,一个公式可以包含零到多个函数 学习重点:基本是学习各种函数如何使用,难点是学习如何将各种函数组合成一条公式,进行综合运用。万金油公式:INDEX + SMALL + IF + ROW 1.02 深入理解函数 函数的结构(函数名、左右括号、用逗号隔开的参数) 例: SUM(P1,P2)

Matlab学习笔记(二)——数据类型

怎甘沉沦 提交于 2020-01-28 04:37:26
2.1 逻辑型 2.1.1 逻辑型简介 logical函数可以将任意类型的数组转换为逻辑类型,其中非零元素为真,零元素为假 true函数可以产生逻辑真值数组 false函数可以产生逻辑假值函数 2.1.2 返回逻辑结果的函数 参与逻辑运算的操作数不一定必须是逻辑类型的变量或常数,也可以使用其他类型的数据进行逻辑运算,但运算的结果一定是逻辑类型的数据 && 具有短路作用的逻辑“与”操作 || 具有短路作用的逻辑“或”操作 any 当向量中元素有非零元素时,返回真 all 当向量中元素都是非零元素时,返回真 短路作用是指,在进行&&运算时,若参与运算的变量有多个,如a&&b&&c,若a为false,则后面两个不再被处理,且返回运算结果false 2.2 字符和字符串 2.2.1 创建字符串 一般字符串的创建: a=‘matlab’ 所有的字符串都用两个单括号引起来,进行输入赋值 字符串的寻访:通过坐标实现,matlab按照从左至右对字符串中的字符依次编号 字符串数组的创立:可以像数值数组的建立那样直接输入,也可以用str2mat等函数建立 2.2.2 字符串比较 strcmp 判断两个字符串是否相等 strncmp 判断两个字符串前n个字符是否相等 strcmpi和strncmpi 二者作用相等,只是在比较过程中忽略了字母大小写 2.2.3 字符串的查找与替换 strrep

ES6 Generator函数

我是研究僧i 提交于 2020-01-21 15:45:25
Generator函数是es6提供的解决异步编程的方案之一; Generator函数是一个状态机,内部封装了不同状态的数据; <script type="text/javascript"> // generator定义 function后面跟个*号 function* myGenerator(){ console.log('业务逻辑A') let result=yield 'hello' console.log(result) console.log('业务逻辑B') yield 'world' console.log('执行完了') } let mg=myGenerator(); console.log(mg.next()) console.log(mg.next('hehe')) console.log(mg.next()) </script> 每次执行一次next() 指针想下偏移一次,根据yield来作用; console.log(mg.next()) console.log(mg.next()) console.log(mg.next()) next()返回结果   对应的yield值,然后done的话,只有后面还有yield,就是false;遍历完了,就是true;   yield返回值,默认是undefined 假如需要值的话,我们next()方法里传值即可; 来源:

[Robot] To transition to a succeeded state, the goal must be in a preempting or active state...

天涯浪子 提交于 2020-01-19 03:10:03
记录 错误: To transition to a succeeded state, the goal must be in a preempting or active state, it is currently in state: 2 原因:不能在抢占回调后server端仍然发送setSucceeded(),因为抢占后便放弃了之前的执行,错在此处 server . setSucceeded ( ) ; 解决:加入一个bool变量标识符在执行函数中,解决抢断的逻辑问题 执行函数修改如下 void ExecuteCb ( const franka_msgs :: PickGoalConstPtr & goal ) { action_ = true ; //为保证标识符有效且不影响正常运行,应进入执行函数时便设置为true . . . //(此处为代码块省略) if ( action_ ) { server . setSucceeded ( ) ; } } 抢断函数修改如下: void preemptCb ( ) { //会自动执行第一个目标再执行第二个。; ROS_INFO_STREAM ( "into preemptCB ..." ) ; action_ = false ; //此处告知:我抢断了,就别发succeed了 group_ - > stop ( ) ; server

吴恩达机器学习3--逻辑回归(Logistic Regression)

吃可爱长大的小学妹 提交于 2020-01-17 23:57:01
分类问题 在分类问题中,你要预测的变量 𝑦 是离散的值,我们将学习一种叫做 逻辑回归 (Logistic Regression) 的算法,这是目前最流行使用最广泛的一种学习算法。 在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问题的例子有:判断一封电子邮件是否是垃圾邮件;判断一次金融交易是否是欺诈;判断肿瘤是恶性还是良性 先从二元分类来讨论 我们将因变量可能属于的两个类别称为 正类 和 负类 ,我们用0表示负类,用1表示正类。 如果我们用线性回归来解决一个分类问题,线性函数的输出值可能远大于1或者远小于0,那怎么办呢? 所以我们就要逻辑回归的算法的 输出值永远在0到1中间 根据线性回归模型,我们只能预测连续值,而逻辑回归预测的是离散值,我们可以假设 当ℎ𝜃(𝑥) >= 0.5时,预测 𝑦 = 1。 当ℎ𝜃(𝑥) < 0.5时,预测 𝑦 = 0 。 我们引入一个新的模型,逻辑回归,该模型的输出变量范围始终在 0 和 1 之间。 逻辑回归模型的假设是: ℎ𝜃(𝑥) = 𝑔(𝜃𝑇𝑋) 其中: 𝑋 代表特征向量 𝑔 代表逻辑函数,是一个常用的逻辑函数为 S 形函数(Sigmoid function) python代码实现 import numpy as np def sigmoid ( z ) : return 1 / ( 1 + np . exp ( - z

@。Tensorflow,纯新手入门笔记->回归算法、损失函数

吃可爱长大的小学妹 提交于 2020-01-16 09:24:44
第七节: 机器学习中第一个算法:回归算法 亮点: 1.因变量和自变量之间的关系实现数据的预测。 2.不同自变量对因变量影响的强度。(不就是k嘛) for example :对房价估计时,需要确定房屋面积(自变量)与其价格(因变量)之间的关系,可以利用这一关系来预测给定面积的房屋的价格。 可以有多个影响因变量的自变量。 一、线性回归 其中,X=(x1,​x2,…,xn) 为 n 个输入变量,W=(w1,w2,…,wn) 为线性系数,b 是偏置项。目标是找到系数 W 的最佳估计,使得预测值 Y 的误差最小。 亮点: 1.W很重要,要W最佳,使得误差最小。 2.最小二乘法,可以使得W最佳。即使预测值 (Yhat) 与观测值 (Y) 之间的差的平方和最小。 3.还有个b偏置 因此,这里尽量最小化损失函数: 根据输入变量 X 的数量和类型,可划分出多种线性回归类型: 简单线性回归(一个输入变量,一个输出变量),多元线性回归(多个输入变量,一个输出变量),多变量线性回归(多个输入变量,多个输出变量)。 二、逻辑回归 :用来确定一个事件的概率。通常来说,事件可被表示为类别因变量。事件的概率用 logit 函数(Sigmoid 函数)表示: 现在的目标是估计权重 W=(w1,w2,…,wn) 和偏置项 b。在逻辑回归中,使用最大似然估计量或随机梯度下降来估计系数。损失函数通常被定义为交叉熵项: