硬幣遊戲解題詳解 王豐緒 銘傳大學資訊工程學系.

Slides:



Advertisements
Similar presentations
集团公司火力发电厂热工自动控 制系统的投入情况和问题分析 东北所热自室. 自动控制系统是机组热工专业管理水 平和设备状态的集中体现,一台机组 的自动投入率和自动调节品质体现了 机组的整体水平。同时,自动控制效 果的优劣,也是机组节能降耗目标的 实现手段和基础。
Advertisements

宜昌金海科技股份有限公司 IB START 投行圈 2000 万股份定向募集项目. 主营业务介绍 从事各种酒类包装盒、食品饮料包装盒、包装箱等包装产 品及相关包装材料的设计、印刷、生产与销售,并为客户 提供包装产品设计、包装方案优化、第三方采购与包装产 品物流配送、供应商库存管理以及辅助包装作业等包装一.
While 迴圈 - 不知重複執行次數
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
生涯不卡關 ~生涯卡之簡介與實務應用 吳慧美.
学习单元——仿宋字. 学习单元——仿宋字 字体的由来 印刷字体的一种,仿照宋版书上所刻的字体,笔画粗细均匀,有长、方、扁三体。也叫仿宋体,仿宋字。 后来人们又模仿宋体字的结构、笔意,改成笔画粗细一致、秀丽狭长的印刷字体,这就是仿宋体。
國立臺灣大學 103 學年度轉學生招生監試說明會 教務處課務組 胡淑君.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
迴圈 迴圈基本觀念 while迴圈 do 迴圈 for迴圈 巢狀迴圈 迴圈設計注意事項 其他控制指令 迴圈與選擇的組合.
第四章 控制结构.
传统采购与现代采购的区别.
PPP规范性文件的解读 主讲人:王周欢 2016年4月.
朝陽國小學校課程發表簡報 活力四年級 導師:蔡于晨.
C#程序设计案例教程 第3章 程 序 结 构.
电大转型社区教育何以可能 华东师范大学终身教育研究中心 主任 教育学部博士生导师 吴遵民教授.
MVC Servlet与MVC设计模式.
第一章 面向对象程序设计.
第一部 认识篇 知己知彼 百战不殆.
八、老人的情緒障礙與治療─憂鬱 朝陽科技大學銀管系講座教授 黃富順.
氣候變遷對南台灣降雨造成之影響 研究背景 結果與討論 研究方法 結論 朱振豪1 、彭康豪1 、莊煌甲1 、邱俊彥2,* 研究目的
第二章 JAVA语言基础.
類別與物件 Class & Object.
VS.
第三章 控制结构.
最低稅負制之商機 報告人:全國通訊處 王碧雪 中華民國 94 年 12 月 13 日.
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
C++Primer 3rd edition 中文版 Chap 5
本單元介紹何謂變數,及說明變數的宣告方式。
程式設計實作.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
程式撰寫流程.
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
委派與執行緒 建國科技大學 資管系 饒瑞佶.
Introduction to the C Programming Language
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Java程序设计 第2章 基本数据类型及操作.
計數式重複敘述 for 迴圈 P
Chapter6 队列(Queues) The Abstract Data Type
4.2通讯服务模块线程之间传递信息 信息工程系 向模军 Tel: QQ:
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
第二章Java基本程序设计.
程式結構&語法.
C#程序设计基础 $3 成员、变量和常量.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
第二章 Java基本语法 讲师:复凡.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
辅导课程十一.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
第二章 Java基本语法 讲师:复凡.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
第2章 Java语言基础.
迴圈(重複性結構) for while do while.
判斷(選擇性敘述) if if else else if 條件運算子.
知識可貴.信用無價 —就學貸款業務介紹 臺灣銀行消費金融部.
人脈經營的藝術 實踐家知識管理集團.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
第二章 Java基础语法 北京传智播客教育
第二章 Java基本语法 讲师:复凡.
Presentation transcript:

硬幣遊戲解題詳解 王豐緒 銘傳大學資訊工程學系

題目 有四種硬幣(壹元、伍元、拾元、伍拾元),每種硬幣有自己的遊戲方式如下: 壹元硬幣 : 猜正反面的遊戲 伍元硬幣 : 擲骰子猜大小遊戲 ( 小 : 1, 2, 3; 大 : 4, 5, 6) 拾元硬幣 : 比大小遊戲 , 電腦與使用者從 13 張牌中隨機各挑一張 , 比大小。 伍拾元硬幣 : 猜猜數字遊戲 ( 電腦隨機產生介於1-20的數字,使用者每猜一個數字,如果答錯,電腦會顯示大一點或小一點 ) ,使用者最多可以猜4次。 寫一個遊戲程式,隨機產生 10 個硬幣,接著玩每個硬幣的遊戲,如果贏了,就獲得該幣值的錢,依此類推。最後,顯示遊戲者得了多少錢。

破題 資料的分析 功能的分析 硬幣(Coin) 遊戲(Game) 變與不變的分析 取得錢數; 啟動硬幣遊戲;每一種遊戲都需要啟動 一元(CoinOne) 五元(CoinFive) 十元(CoinTen) 五十元(CoinFifty) 遊戲(Game) Game1, Game2, Game3, Game4 變與不變的分析 (不變)每一種硬幣都有遊戲 (變)每一種硬幣都有自己專屬的遊戲 功能的分析 取得錢數; 啟動硬幣遊戲;每一種遊戲都需要啟動 (不變)取得錢數的動作; 啟動錢幣遊戲的方法; 遊戲的開始 (變)產生錢幣遊戲的動作; 遊戲的玩法內容

<<abstract>> 元件規劃與設計(一) <<abstract>> Coin 基本資料: protected int money ; protected Game gm; //不變 動作: int getMoney(); abstract Game genGame(); //製造動作 3. boolean runGame(MainWindow mw) { //樣版動作 gm = genGame(mw); //叫用製造動作 return gm.run(); //Game的樣板動作 }

<<abstract>> 元件規劃與設計(二) <<abstract>> Game 基本資訊 protected MainWindow mainWindow; 動作: private void displayWelcomeMessage() public abstract boolean start(); //卡榫 public boolean run() {//模板動作 :遊戲開始 displayWelcomeMessage(); return start(); //呼叫卡榫動作 } }

Coin類別 protected int money ; protected Game gm; public Coin(int m) { money = m; } public int getMoney(){ return money; public abstract Game genGame(MainWindow mw) ; public boolean runGame(MainWindow mw) { gm=genGame(mw); //叫用製造動作 return gm.run(); //Game的樣板動作

Coin1類別 每一個繼承Coin的類別需要實作一個抽象動作 abstract Game genGam(MainWindow);//產生特殊的 遊戲 public Coin1() { super(1); } public Game genGame(MainWindow mw) return new Game1(mw);

Game類別 protected MainWindow mainWindow; public Game(MainWindow mw) { } private void displayWelcomeMessage() { MessageBox msg = new MessageBox(mainWindow); msg.show("準備開始遊戲了,祝你好運!"); public boolean run() { //模板動作 displayWelcomeMessage(); return start(); //呼叫卡榫動作 public abstract boolean start(); //卡榫動作

Game1類別 每一個繼承Game的類別需要實作一個抽象動作 abstract boolean start(); //遊戲的內容 public boolean start() { int guess; InputBox ib = new InputBox(mainWindow); MessageBox msg = new MessageBox(mainWindow); msg.show("Welcome to the Coin Flip Game"); guess =ib.getInteger("Enter a guess (1/0):"); if ( flip() == guess) { msg.show("You win!"); return true; } else { msg.show("You lose!"); return false ;

測試主程式 public void run() { int response; int sum = 0; do { randomCoins() ; //隨機產生20個硬幣 sum = 0; for (int i=0; i<20;i++){ if (coins[i].runGame(mainWindow)) { //if win sum += coins[i].getMoney(); } MessageBox msg = new MessageBox(mainWindow); msg.show("Totally, you win " + sum + "!"); ResponseBox rb = new ResponseBox(mainWindow) ; response = rb.prompt(" Continue ?"); } while (response == ResponseBox.YES) ;

小結 本範例用到了卡榫, 樣板動作, 製造動作 卡榫適用於子類別(應用)與父類別(抽象)的銜接 樣板動作適用於提供一個一致性界面 例如, 本例中Game1類別的start()銜接了Game類別 樣板動作適用於提供一個一致性界面 例如, 本例中Game類別的run()和Coin類別的runGame() 製造動作是一個抽象動作,適用於為子類別(應用) 產生特別的附屬類別 例如, 本例中Coin類別的genGame()動作