历经4天(当然,除去白天正常工作的时间),终于跟着网上的一个免费视频把飞行棋项目做出来了。下载游戏请点击http://wjh.lkbxw.com/htm/soft/softDetail.aspx?iID=31

老师讲的真不错,一步步就是跟着脑子里的思维走,“我想要什么效果,要怎么做”,还把思路过程讲解出来。

不过,哈哈,来“不过”了,不过是虾米意思捏?就是“但是”的意思,哈哈,我的时间太紧张了,没有时间慢慢的跟着把视频全看下来,(老师要照顾大多数)哈哈,所以我都是加快播放速度的,一般我加快到150%~200%之间,有时中间还跳过……(时间太紧张,没办法,又想看又没时间)。

我的观点是完全跟着老师的办法一点点的代码下来,反而会束缚自己的“方法”(这里指程序里的术语“方法”),所以我看了大概,就根据自己的思维写自己的“方法”。

做完了回过来想一想,我认为最难最耗时间最费脑子的应该是“让某玩家暂停1次”功能,就这个功能耗了我2个晚上的时间,最后一次玩我到0:53,说个题外话:程序员,要有个健壮的身体啊!因为我实现的这个游戏,框架和视频里的相差太大了,结构都不一样,所以我找到老师的这一段的实现方法,反复看都没法实现到我程序里,只好自己抠吧!其中,比如我想让玩家A暂停1次,我反复修改代码,竟然能让玩家A连扔两次色子,无语……泪双流!气得我宋词都出来了!夸张了,眼睛累的也差不离了……

其实老师为了照顾初学者,用了一种容易理解的实现玩家A和B掷色子的办法,就是:

do{

//玩家A掷色子

[代码]

//玩家B掷色子

[代码]

}while(true);     就是在代码中顺序执行A、B的掷色子过程,好理解、但是我看到一个缺点是玩家A和B的掷色子的下方的[代码]块非常多而且重复代码(毕竟除了关键处,其它都是只要改 A和B两个字符即可),但就是因为要交替交换A、B掷色子所以没法写成方法被重用(这是我的个人理解)。

而我刚学习了老师讲的out参数一节,想到可以用out参数传递多个参数来解决这个问题(A、B掷色子方法写成一个,用传参的方法传A或B,out参数传出掷出的点数)即:

/// <summary>
        /// 掷色子方法
        /// </summary>
        /// <param name="p">只能接收A或B两个值</param>
        /// <param name="DinceValue">out参数向外传值,外边必须先定义过DinceValue|掷色子掷出的数</param>
        private static void Dince(char p, out int DinceValue)
        {

}

这样,不管是A还是B掷色子,都只需调用这一个方法就可以了。省了“一坨”代码都在主函数内。

当然,用自己的思维实现后,我仍然会再去完整看一遍苏坤老师的视频,我想,用这种方法会事半功倍,好处:

1.不会被别人的思维框住 ;

2.增强了自己写代码的水平(事先没看别人的,用自己的思维先写);

3.自己做出来后,再去看视频(做出来了也不放过老师的视频!!),脑子里会有一个大框架和带着问题,同时能一点点的比较自己和老师的优劣,或者说,老师的“方法”会比我想的好在什么地方;

----------------------------

又看了一遍视频里的代码,发现老师在最后也重写了掷色子的代码:用action方法重用了,关于如何取得对方的名称这点,老师用了一个非常高超的办法:

现场有同学说用if语句,即if 我是0,那么对方是1,else if 我是1,那么对方是0;

我想的办法是三元运算符:playerpos=(playerpos[0]==0)?'1':'0';

但老师用了一个非常高明的办法,只用了一个语句:playnumber=1-playnumber。//自己如果是0,那么运算后对方就是1,自己是1,运算后对方是0.

高,实在是太高了!

程序=结构+算法 , 万物皆简单!

这也是3K程序员与3W程序员的区别之一了吧?

做了个“飞行棋”小游戏相关推荐

  1. C# 飞行棋小游戏 (控制台应用)

    目录 C# 控制台飞行棋小游戏 简要介绍 游戏画面 规则说明 游戏代码 `Entry.cs` `Operate.cs` `Map.cs` `Player.cs` 其他问题 C# 控制台飞行棋小游戏 简 ...

  2. C# 实现飞行棋小游戏

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. C#实现一个控制台飞行棋小游戏(附源码)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 【全栈计划 —— 编程语言之C#】 C# 实现双人飞行棋小游戏

    文章目录 前言 项目结构流程图 项目实现 一.游戏开始界面 二.初始化游戏地图 三.绘制飞行棋地图 四.玩游戏具体逻辑 ① 创建两个玩家角色 ② 具体走到每个关卡触发的结果 ③ 判断胜利 ④ 回首调优 ...

  5. 【C#】制作简单的飞行棋小游戏

    飞行棋双人小游戏 目标:实现飞行棋游戏基础功能 玩家在地图触发道具: 获得道具,可以进行一次选择 1–交换位置 2–让对方退随机格子 踩到炸弹,让对方暂停一回合 乘上了飞机,前进10格 进入隧道,将随 ...

  6. python飞行棋小游戏

    import random # 地图初始坐标 Maps = [0] *100 # 玩家A和玩家B的初始坐标 PlayerPos = [0]*2 # 存储玩家姓名 playerNames = [&quo ...

  7. C#控制台实现飞行棋小游戏

    游戏标题 static void ShowTitle(){Console.ForegroundColor = ConsoleColor.Cyan;Console.WriteLine("*** ...

  8. C#基础知识---飞行棋小游戏

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. 记录基础学习第二_小项目_飞行棋小游戏

    飞行棋项目: 1.游戏头(要求每一个句子显示不同的颜色 )  //这里用到了Console类中的ForegroundColor属性 取值是枚举类型ConsoleColor中的值             ...

最新文章

  1. NVIDIA 自动驾驶软件平台
  2. 自动售货机编程_Rosmaro中基于视觉自动机的编程简介
  3. 如何使用 ABAP 手动解析 multipart/form-data 格式的数据
  4. 二叉树的深度_十七:二叉树的最小深度
  5. 计算机组成原理第06章在线测试,计算机组成原理第六章单元测试(二)(含答案)(4页)-原创力文档...
  6. ajax加载对应的json,jQuery:多个AJAX/JSON请求对应单个回调并行加载
  7. php 默认是几进制数,以0x开头的是多少进制?
  8. Android 10 发布
  9. oracle安装错误10301,Oracle数据库案例整理-Oracle系统运行时故障-表空间所在的目录没有可用空间导致收集统计信息失败...
  10. svn使用过程中遇到的问题
  11. 《Redis开发与运维》学习第六章
  12. 地图开发中用到的比例尺和分辨率
  13. try catch finally 执行简介
  14. us、ms、s 单位转换,不会的都是大傻子!!!
  15. Spring IOC解析
  16. 一个球从100米高度自由下落,每次落地后反跳回原来的高度的一半,再落下;
  17. excel: 单元格格式修改及绘图
  18. Qt窗口之间传值和结构体数据
  19. 小米手机显示服务器已满,小米云空间不足怎么办 小米云服务空间已满官方解决方案...
  20. 提取图片中的文字怎么做?这几种简单方法别错过

热门文章

  1. 海马模拟器连不上ADB的解决方法
  2. Yog2 中的模块化思想
  3. MBR、EBR与DBR详解
  4. 社群团购,一个单品一天卖了200万,爆品模型打造的3个核心点
  5. Echarts图表之线性图、柱形图
  6. 意欲取代WiFi,小基站激发无线市场大变革
  7. 关于github在linux上的加速DNS设置
  8. vue密码md5加密(学习篇)
  9. 安富利携手IDEMIA为物联网和工业4.0应用开发高度灵活的“即插即用”蜂窝连接解决方案
  10. 嵌入式linux学习-驱动(2) hello world 模块实现记录 基于RK3568