软件工程:状态,行为,事件
程序的基本组成结构:顺序,分支,循环。
应用软件的基本组成单位:数据库和增删改查,类和对象的设计。
游戏软件的基本组成单位:状态,事件,行为。软件工程要分析状态转换图。
应用软件的高级功能,也的是状态、事件、行为。
我们用基本的顺序/分支/循环语句,做一下状态,事件,行为。语言无关,为了方便做图片,我们用网页js.
做一个超级玛丽的动画:从左往右走,然后向左跳,再继续往右走,如此循环。
技术原理:用整数state表示状态,多分支执行各个状态下的不同行为--坐标的不同修改方法。在某个状态下,如果达到某个条件,则设置为新状态。
走到屏幕中间,可以看作是一个特殊的事件:达到状态改变的条件。
更多的事件,比如按方向键移动,按空格,跳。我会再写一个例子。
源代码:
<!DOCTYPE html>
<html>
<head><title></title>
</head>
<body>
<canvas width="500" height="300"style="border:2px solid blue;" id="game1"></canvas><br>动画效果:走到屏幕中间,然后向左跳,再继续往右走<script type="text/javascript">//获取绘图环境var side=30;var paints = document.getElementById('game1').getContext('2d');//加载素材图片var img = new Image();img.src = "mario.png";// 等待加载完成再绘制img.onload = function(){paints.drawImage(img, 0,0,50, 50);// 版权声明:本文为CSDN博主「疯一样的雨」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。// 原文链接:https://blog.csdn.net/u013564742/article/details/85077633}console.log("path is "+img.src)//var x=0;var y=254;var max_y=254;var cnt=0;var jump_cnt=0;var w=500;var h=300;var state=1;// 1 walk; 2 jump/function paintback(x, y,w,h){//绘制背景,覆盖上一帧画面paints.fillStyle='#ccddbb'; paints.fillRect(x, y,w,h );}function paintfr(x, y){paints.drawImage( img, x, y);}function gameupdate(){cnt++; //计数器 if( state == 1){//状态1下的行为:walkx+=10;if( x>200){state= 2;jump_cnt=1; // 初始化}}else if( state == 2){ x-=10;y= (jump_cnt-10)*(jump_cnt-10)*2+(max_y-200); //曲线+最高点yjump_cnt++;if(jump_cnt>20){state =1; //状态改变y= max_y; //恢复为走的状态}}paintback(0, 0, w,h);paintfr(x, y);console.log("x "+x);}
setInterval("gameupdate()" , 200);
</script>
</body>
</html>
如果能掌握状态、事件、行为的编写技巧,简单功能都能做。
类的设计中有状态模式,过于复杂,做小的案例不需要。
软件工程:状态,行为,事件相关推荐
- 评张逸的“状态和事件本质相同”(上)-DDD话语批评之一
有位同学给我发了一页张逸的书,让我评点一下其中观点. 图1 摘自<解构领域驱动设计>(张逸,2021) 图片中的"状态和事件本质上是相同的"真是令我"耳目一新 ...
- [全文]DDD话语批评之一:评张逸的“状态和事件本质相同”
原创 潘加宇 UMLChina 9月22日 收录于话题 #建模带来竞争优势35个内容 #分析&设计(领域建模&领域驱动设计)55个内容 有位同学给我发了张逸著的<解构领域驱动设计 ...
- jQuery复选框选中状态更改事件
本文翻译自:jQuery checkbox checked state changed event I want an event to fire client side when a checkbo ...
- 软件工程 -- 状态转换图
1.状态转换图(状态图): 通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为.状态图还指明了作为特定事件的结果系统将做哪些动作,因此状态图提供了行为建模机制. 1.1 状态和事件 状态 状 ...
- mysql 事件状态enable_mysql事件 - wayhk的个人页面 - OSCHINA - 中文开源技术交流社区...
二.创建事件(CREATE EVENT) 先来看一下它的语法:EVENT [IF ] event_name ON SCHEDULE schedule [ON COMPLETION [] PRESER ...
- DOM-13 【实战】输入及状态改变事件、京东搜索框
模块化 IIFE window.onload = function () {init() }function init() {keySearch()others() // 多人开发的模块 }var k ...
- GridView 模版列编辑状态Dropdownlist 事件
最近项目中有这样的需求,当GridView 模版列编辑时,有Dropdownlist 和Textbox.TextBox 中的值需要通过 Dropdownlist 选择来动态取得.方法如下: Cod ...
- 软件工程——实体关系图 + 状态转换图 + 数据流图
实体关系图 + 状态转换图 + 数据流图 + 数据字典 前言 实体关系图 图像 我们常看到的实体关系图 分析 实体分析 关系分析 改进后的实体关系图 项目实体关系图(下面围绕这张图展开) 数据流图 图 ...
- 系统流程图、数据流图、状态转换图、盒图的区别(软件工程课程中学到的)
在学习软件工程这门课的过程当中,学习到了很多种类的图,接下来对此进行总结. 一.系统流程图 1.概念 系统流程图是概括的描绘系统物理模型的传统工具.它的基本思想是用图形符号以黑盒子形式描绘系统里面的每 ...
- Java-MQTT客户端监控连接状态事件
MQTT客户端监控连接状态事件 项目采用paho.mqtt.java客户端,需要监控连接状态变更事件,以进行异常维测和处理. 代码中提供了MqttCallback接口如下: org.eclipse.p ...
最新文章
- TypeError: can only concatenate str (not “float“) to str
- python和c-Cpython和Jython的对比介绍
- 各种软路由 - 自制路由器
- TCP与UDP网络编程总结(一)
- 阿里云服务器安装onlyoffice_阿里云服务器安装 JDK 8
- java获取年的第一天和最后一天_java中如何获取当前年份的第一天和最后一天
- AlipaySDK Cocoapods支持
- NodeMedia / NodeMediaClient-Android(一个简单,快速,免费的直播SDK)
- 大数据_Flink_Java版_数据处理_流处理API_Transform(5)_union合流---Flink工作笔记0034
- 机器学习ai选股_机器学习技术能够有效用于选股吗?(下)
- Linux下汇编语言学习笔记23 ---
- nginx rewrite重写规则配置详解
- [渝粤教育] 九江学院 妇产科护理学 参考 资料
- CentOS7:Ruby安装
- 计算机学硕研究计划,博士研究生学习计划和研究计划
- 3D建模初学者必看!你想要的学习工具都在这了!
- 关于Arcgis runtime sdk for android加载本地.tpk报错Failed to open file. May not be a valid tile package的解决方法
- String StringBuffer StringBuild区别?
- 原生app签名如何转换成快应用签名
- python就业前景不好_Python就业发展前景分析