梭哈遊戲之製作 專題學生:洪鈺婷、陳雅玲 指導老師:洪國勝 國勝工商資訊科. 摘要 使用 JavaScript 製作一個梭哈遊戲,讓使用 者連結本人網站時,即可分享本遊戲。 關鍵詞: JavaScript 、梭哈、遊戲.

Slides:



Advertisements
Similar presentations
大綱 1. 三角函數的導函數. 2. 反三角函數的導函數. 3. 對數函數的導函數. 4. 指數函數的導函數.
Advertisements

专题复习 --- 走进名著 亲近经典 读完《鲁滨孙漂流记》这本精彩的小说 后,一个高大的形象时时浮现在我的眼 前,他就是勇敢的探险家、航海家鲁滨 孙。他凭着顽强的毅力,永不放弃的精 神,实现了自己航海的梦想。 我仿佛看到轮船甲板上站着这样的一 个人:他放弃了富裕而又舒适的生活, 厌恶那庸庸碌碌的人生,从而开始了一.
從一付卜克牌 (52 張 ) 中,任選 5 張牌,有幾種組合? 《一對》兩張相同數字的牌和三張不同數字的牌所組成 。 《兩對》有兩對兩張相同數字的牌和一張不同數字的牌所 組成。 《三條》由三張相同數字的牌和兩張不同數字的牌所組成。 《順子》連續性的五張牌所構成的牌型。含有A的五張連 續牌,A必須為首或居末位,才算是順子。
撲克牌 的 機率. 一副撲克牌共 52 張,取 5 張 求各種 「牌型」 出現的 機率 先來複習一下 n 個相異物中,取出 k 個,所有可能 的方法共有多少種? 還記得為什麼吧!
變數與函數 大綱 : 對應關係 函數 函數值 顧震宇 台灣數位學習科技股份有限公司. 對應關係 蛋餅飯糰土司漢堡咖啡奶茶 25 元 30 元 25 元 35 元 25 元 20 元 顧震宇 老師 台灣數位學習科技股份有限公司 變數與函數 下表是早餐店價格表的一部分: 蛋餅 飯糰 土司 漢堡 咖啡 奶茶.
控制方长投下的子公司,需要编制合并报表的演示思路
Excel - 九十七年度教職員工資訊教育訓練 董建弘.
圓的一般式 內容說明: 由圓的標準式展出圓的一般式.
圓的一般式 內容說明: 由圓的標準式展出圓的一般式.
神奇的俄羅斯方塊 臺北市立大安高級工業職業學校 資訊三甲 專題名 稱 : 指導老師 : 王敏男 小組成員 : 朱柏昇 林修輊 林家敬
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
《网页设计与制作》 教学课件 主讲人:湖南铁道职业技术学院 陈承欢
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
臺北市立大學 資訊科學系(含碩士班) 賴阿福
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
Q101 在701 SDX Linux上的標準安裝與使用程序v2
2-3 基本數位邏輯處理※.
第八章 利用SELECT查詢資料.
第二章 Linux基本指令與工具操作 LINUX 按圖施工手冊.
如何寫工程計畫書 臺北市童軍會考驗委員會 高級考驗營 版.
R教學 安裝RStudio 羅琪老師.
CHT IPv6測試 D-Link Taiwan 友訊科技台灣分公司 TTSS 電信技術支援課 Name:
安裝JDK 安裝Eclipse Eclipse 中文化
網頁切換移轉 JS vs. ASP.NET.
OpenID與WordPress使用說明
硬體話機設定說明.
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
系統設定 IE8相容性檢視
程式設計專題.
Java 程式設計 講師:FrankLin.
網頁切換移轉 JS vs. ASP.NET.
網路安全技術 OSI七層 學生:A 郭瀝婷 指導教授:梁明章.
撲克牌的整數倍.
VS.NET 2003 IDE.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
PowerPoint 2019/4/9.
電子商務新版面問題排除.
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
資料來源 2 網路過濾軟體之安裝說明 資料來源 2.
網頁資料知多少? 事 實 ? 謠言?.
網際網路與電腦應用 林偉川 2001/10/11.
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
Chime.
安裝 / 操作 flashget SOP (以Win 7 作業系統為範例)
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
CH05. 選擇敘述.
Google協作平台+檔案分享(FileZilla+網路芳鄰)
期末考.
挑戰C++程式語言 ──第8章 進一步談字元與字串
Ogive plot example 說明者:吳東陽 2003/10/10.
電腦概論考題分析 佛學資訊組 碩一 張榮顯.
取得與安裝TIDE 從TIBBO網站取得TIDE
Dreamweaver 進階網頁製作 B 許天彰.
Welcome to my badminton world
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
例題 1. 多項式的排列 1-2 多項式及其加減法 將多項式 按下列方式排列: (1) 降冪排列:______________________ (2) 升冪排列:______________________ 排列 降冪:次數由高至低 升冪;次數由低至高.
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
PVQC-校內賽 考生注意事項.
程式設計--Quick Sort 通訊一甲 B 楊穎穆.
程式語言與邏輯:主題示範 報告人:國立台灣師大附中 李啟龍 老師 學年度資訊科技概論研習.
資料結構與C++程式設計進階 期末考 講師:林業峻 CSIE, NTU 7/ 15, 2010.
指導教師:張慶寶 老師 組長:劉明哲 組員:蔡維庭、葉聖鴻、康有成
小畫家教學 電子版儲存於 學校網頁/學科資訊/電腦科
多站台網路預約系統之 AJAX即時資料更新機制
4-1 變數與函數 第4章 一次函數及其圖形.
指導老師:黃日鉦 組員名單:王友倫.李糧旭.王浩綱.黃種慶.郭宗維
11621 : Small Factors ★★☆☆☆ 題組:Problem Set Archive with Online Judge
JavaScript 教师:魏小迪
CHT IPv6測試 D-Link Taiwan 友訊科技台灣分公司 TTSS 電信技術支援課 Name:
Presentation transcript:

梭哈遊戲之製作 專題學生:洪鈺婷、陳雅玲 指導老師:洪國勝 國勝工商資訊科

摘要 使用 JavaScript 製作一個梭哈遊戲,讓使用 者連結本人網站時,即可分享本遊戲。 關鍵詞: JavaScript 、梭哈、遊戲

前言 有一天路過一家便利商店, 看到有人於電動遊戲台 玩梭哈遊戲, 遊戲內容如下:每次電腦自動發 5 張 樸克牌, 玩者可任意更換某些牌, 其方法是將那些 不要的牌蓋起來, 待全部確定之後, 按一下確定鈕, 即可重新補牌。然後, 電腦依據梭哈遊戲規則, 制 訂一些賠率。例如, 同花大順是 250 倍, 同花順是 50 倍, 鐵枝是 50 倍, 葫蘆是 9 倍, 同花是 6 倍, 順 子是 4 倍, 三條是 3 倍, 兩對是 2 倍, 一對是 1 倍。 學了一學年的程式、網頁設計之後, 乃興起使用 JavaScript 設計一個程式, 讓玩者可以於電腦玩這 一遊戲, 而因為這個遊戲類似梭哈遊戲, 所以將此 專題訂為梭哈遊戲之製作。

研究目的 傳統的梭哈遊戲大都建構在 Basic 或組合語言,僅能 在特製的機器上執行,但是目前網際網路及家用 電腦日益普及,我們希望可以設計一網路版梭哈 遊戲,供應全世界的人,在任何地方,任何時間 都能共同分享此一遊戲。本專題的目的如下: 1 、可以藉由此專題製作,充分探索高職階段所學 的 JavaScript 程式指令與方法。 2 、可以在網際網路上分享我們程式設計的學習成 果。

原理與分析 (一)、 JavaScript JavaScript 是由微軟公司與網景( Netscape )公司 所聯合發展的網頁描述語言 (Script) ,他的語法取 自於 Java ,所以稱為 JavaScript 。因為市面上主 要的瀏覽器都支援此一標準,也是目前客戶端程 式市場佔有率最高的 Script 語言,使用此一語言所 撰寫的程式,即可放在網際網路上,供應全世界 的同好共同分享,這也是我們選擇以 JavaScript 作為本專題網頁設計的主要原因。

(二)、演算分析 本專題的演算分析如下,此及為本間題創新所在, 因為此一程式雖可以在一些 Basic 的書找到,但是 卻無法理解其程式的來龍去脈,所以經由本組成 員實際以此紙牌玩此遊戲,重新思考牌型的判斷, 整理出以下的演算法。 1. 使用 a 陣列記錄莊家的 52 張樸克牌。 2. 樸克牌編碼:將 52 張樸克牌分別以 0 到 51 編 號, 0 代表 1c(one Club), 1 代表 1d (one Diamond), 3 代表 1h(One Heart), 4 代表 1s(One Spade), 5 代表 2c, 51 代表 ks, 依此類推。

3. 樸克牌的顯示:準備 53 張圖片如下圖, g0.jpg~g51.jpg 分別是 52 張牌面,g52.jpg 則代表蓋起來的圖片。 例如,以下 HTML 敘述可顯示此牌蓋起來。 以下則是以 JavaScript 顯示 One Club 圖案。 document.gra.src="g0.jpg" 以下則以陣列表示圖形檔案。 document.gra.src=d[0]; 以下則是以 gra[i] 陣列表示圖形方塊, a[] 表示樸克牌編碼。 document.gra[i].src=d[a[i]];

4. 使用 b2 陣列紀錄 5 張牌出現的點數, b1 陣列紀錄出現的點 數的數量,b3 陣列紀錄每種花色的數量。例如, 若拿到的 5 張牌分別是 3d 、 7c 、 7s 、 10h 、 13h, 則 b1 、 b2 陣列分別 如下: 索引 b1 每點的數量 1211 b2 出現的點數 b3 陣列如下: 索引 0123 花色 cdhs 每一花色數量 1121

5. b1 與 b2 陣列同時依照每一點出現的數量 (b1) 由 大而小排序, 所以 b1 、 b2 陣列如下: 索引 b1 每點的數量 2111 b2 出現的點數

6. 判斷是否同花: 若 b3 陣列有任一花色的數量為 5, 則為同 花。例如,3c 、 7c 、 9c 、 11c 、 13c, 那 b3(0)=5, 所以只要逐一檢查 b3 陣列任一索 引的值為 5, 則為同花。 ( 本例 same_color 為 true)

7. 判斷是否為順或大順: A. 構成順的首要條件是 b1 陣列索引 0 到 4 均要為 1 。 B. 1 (ACE) 有兩種身份, 分別是 0 與 13, 若為 13 則為大順。 C. 1 先以 1 考慮。 D. 將 b2 陣列前 5 筆資料由小而大排序。例如, 1h 2c 3d 4h 5h, 則 b1 、 b2 陣列分 別如下: 索引 b1 每點的數量 b2 出現的點數 E. 若 b2 陣列的內容兩兩相減, 其差均為 1, 則我們肯定其為順。 ( 本例 straight 為 true) F. 1 再以 13 考慮, 此時僅只要判斷 b2(0) 、 b2(1) 、 b2(2) 、 b2(3) 、 b2(4) 是否同時 為 0, 9, 10, 11, 12, 此即為大順。 ( 本例 biger 為 true 且 straight 為 true)

8. 判斷是否鐵支。因為 b1 陣列已經由大而小排序, 所以只要 b1(0)=4 則為鐵支。 9. 判斷是否葫蘆。因為 b1 陣列已經由大而小排序, 所以只要 b1(0) = 3 And b1(1) = 2 則為葫蘆。 10. 判斷是否三條。因為 b1 陣列已經由大而小排序, 所以只要 b1(0) = 3 則為三條。 11. 判斷是否 Two Pair 。因為 b1 陣列已經由大而小 排序, 所以只要 b1(0) = 2 And b1(1) = 2 則為 Two Pair 。 12. 判斷是否 One Pair 。因為 b1 陣列已經由大而小 排序, 所以只要 b1(0) = 2 則為 One Pair 。

四、軟硬體系統 本專題的系統方塊圖如下圖 :

1 、初值設定的程式如下: var i,j; // 牌面初值 var a =new Array(53); // 對應的圖形 var d=new Array("g0.jpg","g1.jpg","g2.jpg","g3.jpg","g4.jpg","g5.jpg","g6.jpg","g7.jpg","g8.jpg","g9.jpg", "g10.jpg","g11.jpg","g12.jpg","g13.jpg","g14.jpg","g15.jpg","g16.jpg","g17.jpg","g18.jpg","g19.jpg", "g20.jpg","g21.jpg","g22.jpg","g23.jpg","g24.jpg","g25.jpg","g26.jpg","g27.jpg","g28.jpg","g29.jpg", "g30.jpg","g31.jpg","g32.jpg","g33.jpg","g34.jpg","g35.jpg","g36.jpg","g37.jpg","g38.jpg","g39.jpg", "g40.jpg","g41.jpg","g42.jpg","g43.jpg","g44.jpg","g45.jpg","g46.jpg","g47.jpg","g48.jpg","g49.jpg", "g50.jpg","g51.jpg","g52.jpg","g53.jpg") ; var same_color; // 同花 var straight; // 順子 var straight1; var b; var s; var b1=new Array(14); var b2=new Array(14); var b3=new Array(4); var j; var cover=new Array(5); // 蓋者或翻開 var biger;

2 、發牌程式如下: function aa(){ document.myname.T3.value=""; document.myname.B1.disabled=true; document.myname.T2.disabled=true; document.myname.B2.disabled=false; // 設定初值 for (i=0;i<=51;i++) a[i]=i; // 洗牌 for (i=0;i<=51;i++) { r=Math.floor(52*Math.random()); t=a[i];a[i]=a[r];a[r]=t; } // 顯示前五張 for (i=0;i<=4;i++) document.gra[i].src=d[a[i]]; // 記錄前 5 張是否蓋者 for (i=0;i<=4;i++) cover[i]=false; }

3 、換牌程式如下: (假如蓋者就翻開,翻開就蓋起來) function g1(nx){ if (cover[nx]==true) { document.gra[nx].src=d[a[nx]]; cover[nx]=false; } else { document.gra[nx].src=d[52]; cover[nx]=true; }

4 、檢查牌型程式如下: (此為本題創新所在,自行將演算法轉為 JavaScript 程式) function judge_card(){ var e=new Array("Club","Dimand","Heart","Spade"); var t; var color,point; same_color=false; var k=""; for (i=1;i<=13;i++){ b1[i]=0; b2[i]=0; } for (i=0;i<=3;i++){ b3[i]=0; }

A 、計算各點的張數、與各花色的數量 for (i=0;i<=4;i++){ color=a[i]%4; point=Math.floor(a[i]/4)+1; b1[point]=b1[point]+1; // 該點的張數 b2[point]=point; // 點數 b3[color]++; // 每種花色的數量 }

B 、 b1,b2 陣列同時依照每點的數量由大到小排序 for (i=1;i<=12;i++) for (j=1;j<=13-i;j++) if (b1[j]< b1[j+1]){ t=b1[j];b1[j]=b1[j+1];b1[j+1]=t; t=b2[j];b2[j]=b2[j+1];b2[j+1]=t; }

C 、判斷是否同花 same_color=false; for (i=0;i<=3;i++) if (b3[i]==5) // 同花 same_color=true;

D 、判斷是否同花大順 if (b1[1]==1 && b1[2]==1 && b1[3]==1 && b1[4]==1 && b1[5]==1){ // 順子 biger=false; //1 先以 1 考慮 judge_straight(); straight1=straight; biger=true; //1 再以 14 考慮,判斷是否大順 judge_straight(); straight=straight ||straight1; if (straight && same_color && biger ){ b=e[color] + " 同花大順 "; s=250; return; }

E 、判斷是否為順 function judge_straight(){ var t; straight=false; if (b2[1]==1 && biger==true) b2[1]=14; for (i=1;i<=4;i++) for (j=1;j<=5-i;j++) if (b2[j]>b2[j+1]){ t=b2[j];b2[j]=b2[j+1];b2[j+1]=t; } if(b2[5]-b2[4]==1 && b2[4]-b2[3]==1 && b2[3]-b2[2]==1 && b2[2]-b2[1]==1) straight=true; if (b2[1]==10) biger=true; }

F 、牌型認定(一) if (straight && same_color){ b=e[color] + " 同花順 "; s=50; return; } if (same_color) { b=e[color] + " 同花 "; s=4; return; } if (straight) { b= " 順子 "; s=6; return; }

F 、牌型認定(二) if (b1[1]==4){ b=b2[1]+" "+" 鐵枝 "; s=250; return; } if (b1[1]==3 && b1[2]==2){ b=b2[1]+" "+b2[2]+" 葫蘆 "; s=9; return; } if (b1[1]==3 && b1[2]==1){ b=b2[1]+" "+" 三條 "; s=9; return; }

F 、牌型認定(三) if (b1[1]==2 && b1[2]==2){ b=b2[1]+" "+b2[2]+"Two pair"; s=2; return; } if (b1[1]==2 ){ b=b2[1]+" "+"One pair"; s=1; return; }

五、專題成果與比較 1 、本專題執行,初始畫面如下,

2 、按一下 “ 發牌 ” ,畫面如下:

3 、將想要更換的牌蓋起來,畫面如下:

4 、按一下 “ 換牌確定 ” ,畫面下:

七、參考文獻 1 、洪國勝, Visual Basic 程式設計,全華圖 書有限公司 2 、高雄應用科大電子系,電子設計創意競賽。