与同学的结对软件工程

结对成员

 姓名:王刚德     学号:201303011130

                          姓名:徐文涛     学号:201303011161    

我们的心得:

软件工程第二次作业的结对编程,我和我的队友万炼炼设计了一个基于unity3d的魔方游戏,通过在网上边学习边操作的方式,了解了unity3d游戏引擎的基本机制, 同时也深刻体会到要做出一个软件,团队合作的重要性。在这次结对编程中,我主要担任的是代码的编写,以及游戏逻辑的设计。万炼炼同学主要负责的是游戏资源的管理,以及游戏的整体设计。unity是一款强大的3d游戏引擎,目前市面上大部分流行的3d游戏都可以用u3d来设计,我们设计的魔方游戏虽然简单,但也付出了一定的心血,其中涉及到对每一层魔方的旋转,还包括横向旋转和竖向旋转。在游戏中还要兼顾到玩家的体验,比如在游戏中可以旋转视图来让玩家更好地来观察魔方的几个面的变化。

主要的脚本程序:

[csharp] view plaincopy

  1. #endregion
  2. #region Easing Curves
  3. private float linear(float start, float end, float value){
  4. return Mathf.Lerp(start, end, value);
  5. }
  6. private float clerp(float start, float end, float value){
  7. float min = 0.0f;
  8. float max = 360.0f;
  9. float half = Mathf.Abs((max - min) / 2.0f);
  10. float retval = 0.0f;
  11. float diff = 0.0f;
  12. if ((end - start) < -half){
  13. diff = ((max - start) + end) * value;
  14. retval = start + diff;
  15. }else if ((end - start) > half){
  16. diff = -((max - end) + start) * value;
  17. retval = start + diff;
  18. }else retval = start + (end - start) * value;
  19. return retval;
  20. }
  21. private float spring(float start, float end, float value){
  22. value = Mathf.Clamp01(value);
  23. value = (Mathf.Sin(value * Mathf.PI * (0.2f + 2.5f * value * value * value)) * Mathf.Pow(1f - value, 2.2f) + value) * (1f + (1.2f * (1f - value)));
  24. return start + (end - start) * value;
  25. }
  26. private float easeInQuad(float start, float end, float value){
  27. end -= start;
  28. return end * value * value + start;
  29. }
  30. private float easeOutQuad(float start, float end, float value){
  31. end -= start;
  32. return -end * value * (value - 2) + start;
  33. }
  34. private float easeInOutQuad(float start, float end, float value){
  35. value /= .5f;
  36. end -= start;
  37. if (value < 1) return end / 2 * value * value + start;
  38. value--;
  39. return -end / 2 * (value * (value - 2) - 1) + start;
  40. }
  41. private float easeInCubic(float start, float end, float value){
  42. end -= start;
  43. return end * value * value * value + start;
  44. }
  45. private float easeOutCubic(float start, float end, float value){
  46. value--;
  47. end -= start;
  48. return end * (value * value * value + 1) + start;
  49. }
  50. private float easeInOutCubic(float start, float end, float value){
  51. value /= .5f;
  52. end -= start;
  53. if (value < 1) return end / 2 * value * value * value + start;
  54. value -= 2;
  55. return end / 2 * (value * value * value + 2) + start;
  56. }
  57. private float easeInQuart(float start, float end, float value){
  58. end -= start;
  59. return end * value * value * value * value + start;
  60. }
  61. private float easeOutQuart(float start, float end, float value){
  62. value--;
  63. end -= start;
  64. return -end * (value * value * value * value - 1) + start;
  65. }
  66. private float easeInOutQuart(float start, float end, float value){
  67. value /= .5f;
  68. end -= start;
  69. if (value < 1) return end / 2 * value * value * value * value + start;
  70. value -= 2;
  71. return -end / 2 * (value * value * value * value - 2) + start;
  72. }
  73. private float easeInQuint(float start, float end, float value){
  74. end -= start;
  75. return end * value * value * value * value * value + start;
  76. }
  77. private float easeOutQuint(float start, float end, float value){
  78. value--;
  79. end -= start;
  80. return end * (value * value * value * value * value + 1) + start;
  81. }
  82. private float easeInOutQuint(float start, float end, float value){
  83. value /= .5f;
  84. end -= start;
  85. if (value < 1) return end / 2 * value * value * value * value * value + start;
  86. value -= 2;
  87. return end / 2 * (value * value * value * value * value + 2) + start;
  88. }
  89. private float easeInSine(float start, float end, float value){
  90. end -= start;
  91. return -end * Mathf.Cos(value / 1 * (Mathf.PI / 2)) + end + start;
  92. }
  93. private float easeOutSine(float start, float end, float value){
  94. end -= start;
  95. return end * Mathf.Sin(value / 1 * (Mathf.PI / 2)) + start;
  96. }
  97. private float easeInOutSine(float start, float end, float value){
  98. end -= start;
  99. return -end / 2 * (Mathf.Cos(Mathf.PI * value / 1) - 1) + start;
  100. }
  101. private float easeInExpo(float start, float end, float value){
  102. end -= start;
  103. return end * Mathf.Pow(2, 10 * (value / 1 - 1)) + start;
  104. }
  105. private float easeOutExpo(float start, float end, float value){
  106. end -= start;
  107. return end * (-Mathf.Pow(2, -10 * value / 1) + 1) + start;
  108. }
  109. private float easeInOutExpo(float start, float end, float value){
  110. value /= .5f;
  111. end -= start;
  112. if (value < 1) return end / 2 * Mathf.Pow(2, 10 * (value - 1)) + start;
  113. value--;
  114. return end / 2 * (-Mathf.Pow(2, -10 * value) + 2) + start;
  115. }
  116. private float easeInCirc(float start, float end, float value){
  117. end -= start;
  118. return -end * (Mathf.Sqrt(1 - value * value) - 1) + start;
  119. }
  120. private float easeOutCirc(float start, float end, float value){
  121. value--;
  122. end -= start;
  123. return end * Mathf.Sqrt(1 - value * value) + start;
  124. }
  125. private float easeInOutCirc(float start, float end, float value){
  126. value /= .5f;
  127. end -= start;
  128. if (value < 1) return -end / 2 * (Mathf.Sqrt(1 - value * value) - 1) + start;
  129. value -= 2;
  130. return end / 2 * (Mathf.Sqrt(1 - value * value) + 1) + start;
  131. }
  132. private float easeInBounce(float start, float end, float value){
  133. end -= start;
  134. float d = 1f;
  135. return end - easeOutBounce(0, end, d-value) + start;
  136. }
  137. private float easeOutBounce(float start, float end, float value){
  138. value /= 1f;
  139. end -= start;
  140. if (value < (1 / 2.75f)){
  141. return end * (7.5625f * value * value) + start;
  142. }else if (value < (2 / 2.75f)){
  143. value -= (1.5f / 2.75f);
  144. return end * (7.5625f * (value) * value + .75f) + start;
  145. }else if (value < (2.5 / 2.75)){
  146. value -= (2.25f / 2.75f);
  147. return end * (7.5625f * (value) * value + .9375f) + start;
  148. }else{
  149. value -= (2.625f / 2.75f);
  150. return end * (7.5625f * (value) * value + .984375f) + start;
  151. }
  152. }
  153. private float easeInOutBounce(float start, float end, float value){
  154. end -= start;
  155. float d = 1f;
  156. if (value < d/2) return easeInBounce(0, end, value*2) * 0.5f + start;
  157. else return easeOutBounce(0, end, value*2-d) * 0.5f + end*0.5f + start;
  158. }
  159. private float easeInBack(float start, float end, float value){
  160. end -= start;
  161. value /= 1;
  162. float s = 1.70158f;
  163. return end * (value) * value * ((s + 1) * value - s) + start;
  164. }
  165. private float easeOutBack(float start, float end, float value){
  166. float s = 1.70158f;
  167. end -= start;
  168. value = (value / 1) - 1;
  169. return end * ((value) * value * ((s + 1) * value + s) + 1) + start;
  170. }
  171. private float easeInOutBack(float start, float end, float value){
  172. float s = 1.70158f;
  173. end -= start;
  174. value /= .5f;
  175. if ((value) < 1){
  176. s *= (1.525f);
  177. return end / 2 * (value * value * (((s) + 1) * value - s)) + start;
  178. }
  179. value -= 2;
  180. s *= (1.525f);
  181. return end / 2 * ((value) * value * (((s) + 1) * value + s) + 2) + start;
  182. }
  183. private float punch(float amplitude, float value){
  184. float s = 9;
  185. if (value == 0){
  186. return 0;
  187. }
  188. if (value == 1){
  189. return 0;
  190. }
  191. float period = 1 * 0.3f;
  192. s = period / (2 * Mathf.PI) * Mathf.Asin(0);
  193. return (amplitude * Mathf.Pow(2, -10 * value) * Mathf.Sin((value * 1 - s) * (2 * Mathf.PI) / period));
  194. }
  195. private float easeInElastic(float start, float end, float value){
  196. end -= start;
  197. float d = 1f;
  198. float p = d * .3f;
  199. float s = 0;
  200. float a = 0;
  201. if (value == 0) return start;
  202. if ((value /= d) == 1) return start + end;
  203. if (a == 0f || a < Mathf.Abs(end)){
  204. a = end;
  205. s = p / 4;
  206. }else{
  207. s = p / (2 * Mathf.PI) * Mathf.Asin(end / a);
  208. }
  209. return -(a * Mathf.Pow(2, 10 * (value-=1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p)) + start;
  210. }
  211. private float easeOutElastic(float start, float end, float value){
  212. //Thank you to rafael.marteleto for fixing this as a port over from Pedro‘s UnityTween
  213. end -= start;
  214. float d = 1f;
  215. float p = d * .3f;
  216. float s = 0;
  217. float a = 0;
  218. if (value == 0) return start;
  219. if ((value /= d) == 1) return start + end;
  220. if (a == 0f || a < Mathf.Abs(end)){
  221. a = end;
  222. s = p / 4;
  223. }else{
  224. s = p / (2 * Mathf.PI) * Mathf.Asin(end / a);
  225. }
  226. return (a * Mathf.Pow(2, -10 * value) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p) + end + start);
  227. }
  228. private float easeInOutElastic(float start, float end, float value){
  229. end -= start;
  230. float d = 1f;
  231. float p = d * .3f;
  232. float s = 0;
  233. float a = 0;
  234. if (value == 0) return start;
  235. if ((value /= d/2) == 2) return start + end;
  236. if (a == 0f || a < Mathf.Abs(end)){
  237. a = end;
  238. s = p / 4;
  239. }else{
  240. s = p / (2 * Mathf.PI) * Mathf.Asin(end / a);
  241. }
  242. if (value < 1) return -0.5f * (a * Mathf.Pow(2, 10 * (value-=1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p)) + start;
  243. return a * Mathf.Pow(2, -10 * (value-=1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p) * 0.5f + end + start;
  244. }
  245. /* GFX47 MOD END */
  246. #endregion
  247. #region Deprecated and Renamed
  248. #endregion
  249. }

在游戏的基础上我们还添加了快捷输入公式功能,能够让你在输入公式过后魔方自动执行步骤。由于这只是基础版的,游戏也只是开发出了一个雏形,后来可以添加一些计时功能,或者能够网络对战。

第一次结对的,感触算是认识到了:

1)两个人一起写,代码质量可以得到很大的保证,避免犯很多小错误,细节考虑更全面,代码风格也可以保持一致。而且我相信完全可以提高工作效率,因为当有另外一个人就坐在你身边负责审查你的代码的时候,你是不可能忽略他的。

   2)同时最起码有两个人熟悉这一段代码,这对代码以后的维护,项目的运营都是很有好处的。

   3)当你在另一个开发伙伴身边坐下并一起工作的时候,你总可以从他身上学到一些诀窍和技术。这样,参与的双方都可以快速的学习进步。

   4)两个员工之间当面相互的交流,很直接,很容易碰出火花。很多人看来,程序员似乎是一个很木讷的人,但实际上很多时候,程序员只是觉得跟你没有共同语言,熟称的看不起你的智商(我认为程序员是一个很自傲又很自卑的群体,但这个跟本文没有关系)。但如果跟对方有相应的互动,程序员可以表现的很善谈,很自信。这样,世界上就有多了一对基佬。多美好的事

这个结对编程过程中,我和同伴轮流编程,轮流检测,轮流查阅资料,由于是自带的3d引擎,感觉也比较耗性能,特别是3d渲染,还有对每一帧的更新也比较吃cpu和显卡,程序自身比较简单,这次能够在unity3d上运行一个小小成功算是一种学习吧。

时间: 2024-11-12 01:19:44

与同学的结对软件工程的相关文章

汉堡--结对--软件工程

送他一个汉堡------------------------------------------------------------- "音乐会迟到五分钟"是怎么变成"王屋村的男人没有一个好东西"的? 情侣夫妻婆媳大战中,从鸡毛蒜皮小事上升到人格问题的例子是不是太多了? 学习软件工程还有助于处理家庭矛盾与社会关系哦. 就事论事是一大法宝,就像Tab缩进会带来不便,没必要扯移山学院都自私一样. 经过一番的结对编程,同学院们对Ta有什么想法呢? 用汉堡包的方式评价一下自

构建之法:现代软件工程——问题所见

快速浏览<构建之法:现代软件工程>这本教材后,提出的问题如下: (1)IT专业的大学生毕业后转变为职场人员需要些什么?怎样做一个合格的软件工程师? (2)本科期间软件工程学到的知识杂而多,很难让同学有个清晰全面的了解,而且很多东西都是课本上的,国内的 软件工程教育的优缺点是什么? (3)研发出符合用户需求的软件系统是软件企业的首要目标,而需求来自于实际,对应于软件工程上即需求分析, 可需求千奇百怪,软件企业如何合理地行调研和选择? (4)一个好的软件或系统要时刻关注用户的需求,并根据其改变做出

结对编程:简单四则运算软件

在软件工程综合实现专题课上,杨雨婷与邻宿舍的雨晨同学约定结对写程序.经过一个忙碌的周末,我们于周日晚上正式开始讨论. 项目要求与背景 小学老师要每周给同学出三百道四则运算练习题.要求算式包含两个运算符,数字在100以内,答案在0-100之间.后续有了新的要求:1.题目避免重复.2.可拓展性.3.可定制(数量/打印方式)4.具体定制(是否有乘除法,是否有括号,数值范围,加减有负数,除法是否有余数,是否支持分数,打印每行的间隔可调整.) 项目编程过程 最初我们写了一个简单代码,也就是317版本,之后

【集美大学1411_助教博客】2017软件工程开跑啦。。。

一.自我介绍 各位同学大家好,我是各位同学本学期软件工程这门课的助教,我叫郑蕊,现工作于吉林省长春市.很荣幸能再一次为<构建之法>担当助教,在之前担当助教的过程中,我已经获益良多,在此还是要感谢周老师和邹老师,感谢两位老师给我树立的优秀榜样,也感谢两位老师对我的教导和引导.很高兴这次能担当集美大学软工课的助教,在15年冬,我曾去过集美大学,那真的是一所风景非常优美的院校,从暴雪的东北到达绿意盎然的夏门,在集美大学的校园中漫步真是一件让人享受的事.希望本学期能和集美大学的同学们共同探讨软件工程,

第五周任务以及结对编程

转眼已经第三周了.这周主要内容有下: 1.完成自己没完成的任务. 2.结对编程. 3.PSP. 4.站立会议(待开). 5.燃尽图. 具体任务如下: 这次结对编程我是和高鑫同学进行结对,在对构建之法这本书的学习中,我了解到结对编程是极限编程中的一种方式,对两个人的提高,对整个程序,对整个项目,都有很大的帮助. 在这次编程当中,我们以完成“增加习题本”这个项目为编程目的进行编程.由于高鑫同学C语言很强,但是没有做过前端任务,所以由我担任“驾驶员”,高鑫作为“领航员”.在这次结对的过程 中,我学习到

结对编程1

根据需求 ,班级同学都结对开始学校代码.首先第一个代码就是以前的一个APP.自己查找APP中的错误. 打开AS后,开始查找错误.下面是错误截图 这是一些错误截图. 修改的代码下次发 下面说说我跟我队友解决问题的办法... 我队友看的懂代码,我看不懂,基本是队友在指导我,结队后,,,起码看得懂一点点了 继续说不定能看懂基本的

结对编程实现小学四则运算

结对编程实现四则运算 前言:按照结对编程的原则,我和小组另一个成员进行了两人进行了结对编程,我们开发的结对项目的是小学的四则运算,具体就是随机生成30道题,供学生答题并返回正误.经过讨论,我们将采用Java的图形化界面完成,分工为两部分,一人负责四则运算的产生,一个界面以及运算后的界面. 功能:实现用户输入的数量,随机产生四则运算,用户输入答案,判断用户输入的正误并记录如一张表供用户查询. 下面是具体的代码及演示: 四则运算式的产生:(向外提供四则运算式String类借口.提供正确的答案以及各个

软件工程的理解、问题

摘要:软件工程是一门研究用工程化方法构建和维护有效的.实用的和高质量的软件的学科.它涉及程序设计语言.数据库.软件开发工具.系统平台.标准.设计模式等方面. 软件工程是研究和应用如何以系统性的.规范化的.可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来. 问题: 一.对于之前的课程学得不扎实的同学,对于软件工程这门课很难吗?大概需要哪些课程的知识? 二.我们可以怎样去学好软件工程? 三.只学好一门程序设计语言,能做好软件工程吗?

201571030314《小学生四则运算练习软件》结对项目

结对编程实现小学生四则运算练习软件 前言:按照结对编程的原则,我和邻宿舍的小伙伴进行了两人结对编程,我们开发的结对项目的是小学生四则运算练习软件,具体就是随机生成n道题,供学生答题并返回正误记录答题结果,进行多轮.具体需求分析以及功能设计与实现如下. github代码地址:https://github.com/mqqgd/Experiment2 一.需求分析 本次实验采用结对编程方式,设计开发一个小学生四则运算练习软件,使之具有以下功能: 由计算机从题库文件中随机选择20道加减乘除混合算式,用户