程序的基本组成结构:顺序,分支,循环。
应用软件的基本组成单位:数据库和增删改查,类和对象的设计。

游戏软件的基本组成单位:状态,事件,行为。软件工程要分析状态转换图。

应用软件的高级功能,也的是状态、事件、行为。

我们用基本的顺序/分支/循环语句,做一下状态,事件,行为。语言无关,为了方便做图片,我们用网页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>

如果能掌握状态、事件、行为的编写技巧,简单功能都能做。

类的设计中有状态模式,过于复杂,做小的案例不需要。

软件工程:状态,行为,事件相关推荐

  1. 评张逸的“状态和事件本质相同”(上)-DDD话语批评之一

    有位同学给我发了一页张逸的书,让我评点一下其中观点. 图1 摘自<解构领域驱动设计>(张逸,2021) 图片中的"状态和事件本质上是相同的"真是令我"耳目一新 ...

  2. [全文]DDD话语批评之一:评张逸的“状态和事件本质相同”

    原创 潘加宇 UMLChina 9月22日 收录于话题 #建模带来竞争优势35个内容 #分析&设计(领域建模&领域驱动设计)55个内容 有位同学给我发了张逸著的<解构领域驱动设计 ...

  3. jQuery复选框选中状态更改事件

    本文翻译自:jQuery checkbox checked state changed event I want an event to fire client side when a checkbo ...

  4. 软件工程 -- 状态转换图

    1.状态转换图(状态图): 通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为.状态图还指明了作为特定事件的结果系统将做哪些动作,因此状态图提供了行为建模机制. 1.1 状态和事件 状态 状 ...

  5. mysql 事件状态enable_mysql事件 - wayhk的个人页面 - OSCHINA - 中文开源技术交流社区...

    二.创建事件(CREATE EVENT) 先来看一下它的语法:EVENT [IF  ] event_name ON SCHEDULE schedule [ON COMPLETION [] PRESER ...

  6. DOM-13 【实战】输入及状态改变事件、京东搜索框

    模块化 IIFE window.onload = function () {init() }function init() {keySearch()others() // 多人开发的模块 }var k ...

  7. GridView 模版列编辑状态Dropdownlist 事件

    最近项目中有这样的需求,当GridView 模版列编辑时,有Dropdownlist 和Textbox.TextBox  中的值需要通过 Dropdownlist  选择来动态取得.方法如下: Cod ...

  8. 软件工程——实体关系图 + 状态转换图 + 数据流图

    实体关系图 + 状态转换图 + 数据流图 + 数据字典 前言 实体关系图 图像 我们常看到的实体关系图 分析 实体分析 关系分析 改进后的实体关系图 项目实体关系图(下面围绕这张图展开) 数据流图 图 ...

  9. 系统流程图、数据流图、状态转换图、盒图的区别(软件工程课程中学到的)

    在学习软件工程这门课的过程当中,学习到了很多种类的图,接下来对此进行总结. 一.系统流程图 1.概念 系统流程图是概括的描绘系统物理模型的传统工具.它的基本思想是用图形符号以黑盒子形式描绘系统里面的每 ...

  10. Java-MQTT客户端监控连接状态事件

    MQTT客户端监控连接状态事件 项目采用paho.mqtt.java客户端,需要监控连接状态变更事件,以进行异常维测和处理. 代码中提供了MqttCallback接口如下: org.eclipse.p ...

最新文章

  1. TypeError: can only concatenate str (not “float“) to str
  2. python和c-Cpython和Jython的对比介绍
  3. 各种软路由 - 自制路由器
  4. TCP与UDP网络编程总结(一)
  5. 阿里云服务器安装onlyoffice_阿里云服务器安装 JDK 8
  6. java获取年的第一天和最后一天_java中如何获取当前年份的第一天和最后一天
  7. AlipaySDK Cocoapods支持
  8. NodeMedia / NodeMediaClient-Android(一个简单,快速,免费的直播SDK)
  9. 大数据_Flink_Java版_数据处理_流处理API_Transform(5)_union合流---Flink工作笔记0034
  10. 机器学习ai选股_机器学习技术能够有效用于选股吗?(下)
  11. Linux下汇编语言学习笔记23 ---
  12. nginx rewrite重写规则配置详解
  13. [渝粤教育] 九江学院 妇产科护理学 参考 资料
  14. CentOS7:Ruby安装
  15. 计算机学硕研究计划,博士研究生学习计划和研究计划
  16. 3D建模初学者必看!你想要的学习工具都在这了!
  17. 关于Arcgis runtime sdk for android加载本地.tpk报错Failed to open file. May not be a valid tile package的解决方法
  18. String StringBuffer StringBuild区别?
  19. 原生app签名如何转换成快应用签名
  20. python就业前景不好_Python就业发展前景分析

热门文章

  1. MATLAB代码:计及碳排放交易及多种需求响应的微网/虚拟电厂日前优化调度
  2. 一文入门推荐系统——推荐系统实践读书笔记
  3. TensorFlow进阶:车牌号识别项目
  4. 2021-07-02 swift大礼包
  5. 非常好用的jdk帮助文档jdk1.8中文谷歌翻译
  6. 《Python算法教程简及PDF电子版下载
  7. 计算机漏洞英语怎么说,漏洞英文,漏洞英文发音bug。
  8. java视频教程下载
  9. (附源码)计算机毕业设计SSM基于java语言的在线电子书阅读系统
  10. matlab maple函数用法,怎样在matlab中调用maple命令