擲骰子游戲電路的設計與實現(xiàn)論文-畢業(yè)論文_第1頁
擲骰子游戲電路的設計與實現(xiàn)論文-畢業(yè)論文_第2頁
擲骰子游戲電路的設計與實現(xiàn)論文-畢業(yè)論文_第3頁
擲骰子游戲電路的設計與實現(xiàn)論文-畢業(yè)論文_第4頁
擲骰子游戲電路的設計與實現(xiàn)論文-畢業(yè)論文_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

擲骰子游戲電路的設計與實現(xiàn)數(shù)字電路與邏輯設計實驗報告學院:電子工程學院班級:學號姓名:指導老師:目錄一、 設計課題的任務要求 31、基本要求 32、提高要求 3二、 系統(tǒng)設計 31、設計思路 32、總體框圖 43、分塊設計 6三、 仿真波形及波形分析 71、第1局分出勝負 72、第2——5局分出勝負 83、第6局之后分出勝負 9四、 源程序 91、主程序 92、響鈴程序 26五、 功能說明及資源利用情況 301、基本功能 302、附加功能 303、管口配置 304、資源利用情況 31六、 故障及問題分析 311、按鍵次數(shù)與局數(shù)不一致 312、比較輸贏結果與預期不同 323、數(shù)碼管偶爾會出現(xiàn)亂碼顯示 324、偽隨機數(shù)產(chǎn)生有規(guī)律,隨機性較差 32七、 總結和結論 321、選題總結 322、心得體會 32設計課題的任務要求1、基本要求1、電路可供甲乙二人游戲,游戲者甲使用的按鍵為BTN0,游戲者乙使用的按鍵為2、每按一次按鍵,代表擲一次骰子,可隨機得到3、甲乙按鍵產(chǎn)生的隨機數(shù)字分別用數(shù)碼管DISP0-DISP1、DISP2-DISP3顯示,并用顯示比賽局數(shù),比賽結束用4、具體游戲規(guī)則如下:(1)第一局比賽,甲乙依次各按一次按鍵,按鍵所得兩數(shù)之和為7或11人取勝,則進行第二局比賽;(2)勝,若無人獲勝,則進行第三局比賽,重復進行步驟(2,直到出現(xiàn)勝者為止。(3)以按鍵所得兩數(shù)之和最大者為獲勝方,若依然未分出勝負,重復比大小直到出現(xiàn)勝者為止。2、提高要求1、增加多人游戲的功能,數(shù)碼管可分時記錄顯示每個游戲者的骰子點數(shù)。2、點陣顯示增加游戲開機動畫、結束動畫,并伴有樂曲播放。3、自擬其它功能。系統(tǒng)設計1、設計思路1、開機及復位時,出現(xiàn)開機畫面及音樂,進入待機狀態(tài);2、設置甲方投擲按鈕、乙方投擲按鈕、復位按鈕三個按鍵,玩家按相應的按鈕進行投擲,數(shù)碼管顯示其投擲的兩個隨機數(shù),并顯示進行的局數(shù);3、若比賽進行中有玩家獲勝,則點陣顯示獲勝玩家,同時蜂鳴器響起提示結束;4、數(shù)碼管顯示中,新的一局開始時,即甲玩家投擲后,乙玩家上局的投擲結果應該消失,等待新的投擲;5、按照骰子的結構,投擲的結果應該為1—6的隨機數(shù),應該盡可能地產(chǎn)生等概率的隨機數(shù),共有36種組合情況:1112131415162122232425263132333435364142434445465152535455566162636465666、局數(shù)的顯示應該在乙投擲后,甲投擲前改變;7、按照既定的游戲規(guī)則,系統(tǒng)應該以局數(shù)為指標,對比賽的輸贏進行評判,要充分考慮到每一種情況下的判決問題;8、復位時,要回到起始狀態(tài),初始化信號,等待新一局游戲開始。2、總體框圖頂層框圖對外接口框圖邏輯劃分框圖狀態(tài)轉移圖邏輯流程圖3、分塊設計VHDL支持模塊化設計,可將大規(guī)模設計項目分解成若干個小項目,還可以把已有的設計項目作為一個模塊調用。根據(jù)實驗設計思路及所要完成的功能,將分為以下幾個模塊進行實現(xiàn):蜂鳴器模塊當在開機或復位狀態(tài)時,蜂鳴器響開機音樂,在游戲過程中蜂鳴停止,當有玩家獲勝時蜂鳴器鳴;點陣顯示模塊當在開機或復位狀態(tài)及游戲過程中,點陣顯示開機畫面,當有玩家獲勝時,點陣顯示獲勝玩家;數(shù)碼管顯示模塊分別顯示甲、乙投擲的隨機數(shù)以及局數(shù),復位時甲乙熄滅、局數(shù)歸零;按鍵防抖模塊對甲、乙按鍵進行防抖,用于準確判斷按鍵的次數(shù),得以確定局數(shù);分頻模塊按照不同模塊的需要進行分頻;局數(shù)記錄與顯示模塊用于對局數(shù)的記錄和顯示,并用于輸贏判斷中,按照不同的局數(shù)使用不同的判別規(guī)則;隨機數(shù)產(chǎn)生與顯示模塊當玩家按按鈕時產(chǎn)生兩個隨機數(shù);按規(guī)則判決模塊以局數(shù)為標準按照既定規(guī)則進行輸贏判決。仿真波形及波形分析1、第1局分出勝負分析:如圖所示,jushu為1時,甲投擲和jiasum為7,乙投擲和yisum為8,所以Jia_win為1,表示甲勝利;復位后全部歸0。分析:如圖所示為點陣顯示,dianzhencom為綠色列,dianzhenred為紅色列,dianzhenhang為行掃描,當甲獲勝時出現(xiàn)如圖所示圖形,為“甲”,當重置時,點陣回復為開機畫面“VS”。2、第2——5局分出勝負分析:如圖,1——3局沒有分出勝負,第4局時,乙投擲出10和前一局相同,而甲投擲的4與前一局不相同,因此乙獲勝,Yi_win信號為1;之后按Restart復位后,全部歸0。3、第6局之后分出勝負分析:如圖所示,前五局沒有分出勝負,第六局開始比較大小,甲投擲出6,乙投擲出10大于6,因此乙獲勝,Yi_win為1;之后令Restart為1,即復位后,全部置0。源程序1、主程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityzhitouziisport(Restart:instd_logic;--reset復位端Jia:instd_logic;--thefrist甲投擲按鈕Yi:instd_logic;--thesecond乙投擲按鈕Clk:instd_logic;--clock時鐘端beep:outstd_logic;--beep蜂鳴器tubes:OUTSTD_LOGIC_VECTOR(6DOWNTO0);--七段數(shù)碼管 cats:OUTSTD_LOGIC_VECTOR(5DOWNTO0);--控制端 dianzhencom:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--點陣綠色列 dianzhenred:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--點陣紅色列 dianzhenhang:OUTSTD_LOGIC_VECTOR(7DOWNTO0)--點陣行掃描);endzhitouzi;architectureaofzhitouziiscomponentdidiPORT(clk1:INstd_logic;rst:INstd_logic;beep_in:integerrange0to2;out_bit:OUTstd_logic);endcomponent; signalshumaguan:STD_LOGIC_VECTOR(6DOWNTO0);--數(shù)碼管顯示信號 signalcontrol:STD_LOGIC_VECTOR(5DOWNTO0);--數(shù)碼管6位控制端 signaljia1:std_logic_vector(6downto0);--甲投擲的第一個數(shù)顯示 signaljia2:std_logic_vector(6downto0);--甲投擲的第二個數(shù)顯示 signalyi1:std_logic_vector(6downto0);--乙投擲的第一個數(shù)顯示 signalyi2:std_logic_vector(6downto0);--乙投擲的第二個數(shù)顯示 signaljianum1:integerrange1to6;--甲投擲的第一個數(shù)字 signaljianum2:integerrange1to6;--甲投擲的第二個數(shù)字 signaljiasum:integerrange2to12:=2;--甲投擲的數(shù)字之和 signaljiasum0:integerrange2to12:=2;--記錄前一次甲投擲的數(shù)字之和 signalyinum1:integerrange1to6;--乙投擲的第一個數(shù)字 signalyinum2:integerrange1to6;--乙投擲的第一個數(shù)字 signalyisum:integerrange2to12:=2;--乙投擲的數(shù)字之和 signalyisum0:integerrange2to12:=2;--記錄前一次乙投擲的數(shù)字之和 signaljiasum1:integerrange2to12:=2;--以下均為記錄前一個和 signalyisum1:integerrange2to12:=2; signaljiasum2:integerrange2to12:=2; signalyisum2:integerrange2to12:=2; signaljiasum3:integerrange2to12:=2; signalyisum3:integerrange2to12:=2; signaljushu:integerrange0to9:=0;--記錄當前局數(shù)-- signaljushu2:integerrange0to9:=0; signaljushushow:std_logic_vector(6downto0):="1111110";--當前局數(shù)顯示 signaltimes:integerrange0to5;--數(shù)碼管顯示調頻參數(shù) signalnum1:integerrange0to35;--甲隨機數(shù)控制變量 signalnum2:integerrange0to35;--乙隨機數(shù)控制變量 signalbeep0:integerrange0to2:=2;--蜂鳴器信號 typestateis(S0,S1,S2);--防抖模塊狀態(tài)signalcurrent:state;typestate2is(Y0,Y1,Y2);signalcurrent2:state2;signaljiafang:std_logic;--甲防抖信號signalYifang:std_logic;--乙防抖信號 signaljiasignal:integerrange0to1:=0;--甲乙得分標識 signalyisignal:integerrange0to1:=0; signaljiasignal1:integerrange0to1:=0; signalyisignal1:integerrange0to1:=0; signaljiasignal2:integerrange0to1:=0; signalyisignal2:integerrange0to1:=0; signaljiasignal3:integerrange0to1:=0; signalyisignal3:integerrange0to1:=0; signaljiasignal4:integerrange0to1:=0; signalyisignal4:integerrange0to1:=0; signaljiasignal5:integerrange0to1:=0; signalyisignal5:integerrange0to1:=0; signaljiasignal6:integerrange0to1:=0; signalyisignal6:integerrange0to1:=0; signaljiasignal7:integerrange0to1:=0; signalyisignal7:integerrange0to1:=0; signalwin:integerrange0to2:=0;--勝利標識signaltemp1:integerrange0to149999;signalclk_out1:std_logic;signaltemp2:integerrange0to129999;signalclk_out2:std_logic;typematrix_typeISarray(7downto0)ofstd_logic_vector(7downto0);--定義二維數(shù)組8*8信號signalmatrix:matrix_type;--兩個點陣顯示數(shù)組signalmatrix2:matrix_type;signalsaomiao:std_logic_vector(7downto0);--點陣行掃描信號signaldata:std_logic_vector(7downto0);--點陣綠色列signaldata2:std_logic_vector(7downto0);--點陣紅色列 beginU1:didiportmap(clk1=>clk,rst=>restart,out_bit=>beep,beep_in=>beep0);dianzhenshow:process(clk_out2)--點陣顯示beginif(clk_out2='1'andclk_out2'event)thenifsaomiao(7downto0)="00000000"orsaomiao(7downto0)="01111111"thensaomiao(7downto0)<="11111110";data<=matrix(0);data2<=matrix2(0);elsifsaomiao(7downto0)="11111110"thensaomiao(7downto0)<="11111101";data<=matrix(1);data2<=matrix2(1);elsifsaomiao(7downto0)="11111101"thensaomiao(7downto0)<="11111011";data<=matrix(2);data2<=matrix2(2);elsifsaomiao(7downto0)="11111011"thensaomiao(7downto0)<="11110111";data<=matrix(3);data2<=matrix2(3);elsifsaomiao(7downto0)="11110111"thensaomiao(7downto0)<="11101111";data<=matrix(4);data2<=matrix2(4);elsifsaomiao(7downto0)="11101111"thensaomiao(7downto0)<="11011111";data<=matrix(5);data2<=matrix2(5);elsifsaomiao(7downto0)="11011111"thensaomiao(7downto0)<="10111111";data<=matrix(6);data2<=matrix2(6);elsifsaomiao(7downto0)="10111111"thensaomiao(7downto0)<="01111111";data<=matrix(7);data2<=matrix2(7);endif;endif;endprocessdianzhenshow;juzhenfuzhi:process(clk_out2,restart,win)--給兩個顯示點陣賦值beginif(restart='1')then--復位時的顯示圖形matrix(0)<="11111111"; matrix(1)<="10001111"; matrix(2)<="10001001"; matrix(3)<="10001111"; matrix(4)<="10000011"; matrix(5)<="10001111"; matrix(6)<="11111111"; matrix(7)<="11111111"; matrix2(0)<="11111111"; matrix2(1)<="11010001"; matrix2(2)<="11010001"; matrix2(3)<="11010001"; matrix2(4)<="11010001"; matrix2(5)<="10100001"; matrix2(6)<="11111111"; matrix2(7)<="11111111"; elsif(beep0=1)thenif(clk_out2='1'andclk_out2'event)thenif(win=1)then--甲勝利時的顯示matrix(0)<="01111100"; matrix(1)<="01010100"; matrix(2)<="01111100"; matrix(3)<="01010100"; matrix(4)<="01111100"; matrix(5)<="00010000"; matrix(6)<="00010000"; matrix(7)<="00010000"; matrix2(0)<="01111100"; matrix2(1)<="01010100"; matrix2(2)<="01111100"; matrix2(3)<="01010100"; matrix2(4)<="01111100"; matrix2(5)<="00010000"; matrix2(6)<="00010000"; matrix2(7)<="00010000"; elsif(win=2) then--乙勝利時的顯示 matrix(0)<="01111100"; matrix(1)<="00000100"; matrix(2)<="00000100"; matrix(3)<="00001000"; matrix(4)<="00010000"; matrix(5)<="00100000"; matrix(6)<="01000100"; matrix(7)<="01111100"; matrix2(0)<="01111100"; matrix2(1)<="00000100"; matrix2(2)<="00000100"; matrix2(3)<="00001000"; matrix2(4)<="00010000"; matrix2(5)<="00100000"; matrix2(6)<="01000100"; matrix2(7)<="01111100";elsematrix(0)<="00000000"; matrix(1)<="00000000"; matrix(2)<="00000000"; matrix(3)<="00000000"; matrix(4)<="00000000"; matrix(5)<="00000000"; matrix(6)<="00000000"; matrix(7)<="00000000"; matrix2(0)<="00000000"; matrix2(1)<="00000000"; matrix2(2)<="00000000"; matrix2(3)<="00000000"; matrix2(4)<="00000000"; matrix2(5)<="00000000"; matrix2(6)<="00000000"; matrix2(7)<="00000000";endif;endif;endif;endprocessjuzhenfuzhi;fangdou1:process(clk_out1,restart,Jia)--甲按鈕防抖模塊beginif(restart='1')thencurrent<=S0;jiafang<='0';elseif(clk_out1'eventandclk_out1='1')thencasecurrentiswhenS0=>jiafang<='1';if(Jia='0')thencurrent<=S1;elsecurrent<=S0;endif;whenS1=>jiafang<='1';if(Jia='0')thencurrent<=S2;elsecurrent<=S0;endif;whenS2=>jiafang<='0';if(Jia='0')thencurrent<=S2;elsecurrent<=S0;jiafang<='1';endif;whenothers=>jiafang<='1';current<=S0;endcase;endif;endif;endprocessfangdou1;--fangdou2:process(clk,restart,Yi)--乙按鈕防抖模塊--begin--if(restart='1')then--current2<=Y0;--yifang<='0';--elseif(clk'eventandclk='1')then--casecurrent2is--whenY0=>--yifang<='1';--if(Yi='0')thencurrent2<=Y1;--elsecurrent2<=Y0;--endif;--whenY1=>--yifang<='1';--if(Yi='0')then--current2<=Y2;--else--current2<=Y0;--endif;--whenY2=>--yifang<='0';--if(Yi='0')then--current2<=Y2;--else--current2<=Y0;yifang<='1';--endif;--whenothers=>--yifang<='1';--current2<=Y0;--endcase;--endif;--endif;--endprocessfangdou2;fenpin1:process(clk)--分頻模塊beginifclk'eventandclk='1'theniftemp1=149999thentemp1<=0;elsetemp1<=temp1+1;endif;endif;endprocessfenpin1;p1:process(temp1)beginiftemp1=149999thenclk_out1<='1';elseclk_out1<='0';endif;endprocessp1;fenpin2:process(clk)--分頻模塊2beginifclk'eventandclk='1'theniftemp2=129999thentemp2<=0;elsetemp2<=temp2+1;endif;endif;endprocessfenpin2;p2:process(temp2)beginiftemp2=129999thenclk_out2<='1';elseclk_out2<='0';endif;endprocessp2;showpro:process(clk_out1)--數(shù)碼管顯示模塊變量控制beginif(clk_out1'EVENTANDclk_out1='1')thenif(times=5)thentimes<=0;elsetimes<=times+1;endif;endif;endprocessshowpro;show:process(times)--數(shù)碼管顯示掃描beginCASEtimesIS WHEN0=>shumaguan<=jia1;control<="011111"; WHEN1=>shumaguan<=jia2;control<="101111"; WHEN2=>shumaguan<="1111110";control<="110111"; WHEN3=>shumaguan<=jushushow;control<="111011"; WHEN4=>shumaguan<=yi1;control<="111101"; WHEN5=>shumaguan<=yi2;control<="111110"; WHENOTHERS=>shumaguan<="0000000"; ENDCASE;endprocessshow;ju:process(jiafang)--局數(shù)變量處理與顯示beginif(restart='1')then jushu<=0;jushushow<="1111110";elsif(jiafang'EVENTANDjiafang='1')then jushu<=jushu+1; casejushuis when0=>jushushow<="1111110"; when1=>jushushow<="0110000"; when2=>jushushow<="1101101"; when3=>jushushow<="1111001"; when4=>jushushow<="0110011"; when5=>jushushow<="1011011"; when6=>jushushow<="1011111"; when7=>jushushow<="1110000"; when8=>jushushow<="1111111"; when9=>jushushow<="1111011";jushu<=0; whenothers=>jushu<=0;jushushow<="1111110"; endcase; endif;endprocessju;Jiashow:process(clk_out1,Restart,Jia)--甲隨機數(shù)產(chǎn)生與顯示,并記錄所得出的數(shù)字beginif(restart='1')thenjia1<="0000000";jia2<="0000000";jiasum<=2;elsif(clk_out1'EVENTANDclk_out1='1')THEN--共有36種組合隨機產(chǎn)生,制造偽隨機數(shù) if(num1=35)then num1<=0;elsifJia='0'thennum1<=num1+1;else casenum1is when0=>jia1<="0110000";jia2<="0110000"; --11 when1=>jia1<="1101101";jia2<="1101101"; when2=>jia1<="1111001";jia2<="1111001"; when3=>jia1<="0110011";jia2<="0110011"; when4=>jia1<="1011011";jia2<="1011011"; when5=>jia1<="1011111";jia2<="1011111"; when6=>jia1<="0110000";jia2<="1101101"; --12 when7=>jia1<="1101101";jia2<="1111001"; when8=>jia1<="1111001";jia2<="0110011"; when9=>jia1<="0110011";jia2<="1011011"; when10=>jia1<="1011011";jia2<="1011111"; when11=>jia1<="1011111";jia2<="0110000"; when12=>jia1<="0110000";jia2<="1111001"; --13 when13=>jia1<="1101101";jia2<="0110011"; when14=>jia1<="1111001";jia2<="1011011"; when15=>jia1<="0110011";jia2<="1011111"; when16=>jia1<="1011011";jia2<="0110000"; when17=>jia1<="1011111";jia2<="1101101"; when18=>jia1<="0110000";jia2<="0110011"; --14 when19=>jia1<="1101101";jia2<="1011011"; when20=>jia1<="1111001";jia2<="1011111"; when21=>jia1<="0110011";jia2<="0110000"; when22=>jia1<="1011011";jia2<="1101101"; when23=>jia1<="1011111";jia2<="1111001"; when24=>jia1<="0110000";jia2<="1011011"; --15 when25=>jia1<="1101101";jia2<="1011111"; when26=>jia1<="1111001";jia2<="0110000"; when27=>jia1<="0110011";jia2<="1101101"; when28=>jia1<="1011011";jia2<="1111001"; when29=>jia1<="1011111";jia2<="0110011"; when30=>jia1<="0110000";jia2<="1011111"; --16 when31=>jia1<="1101101";jia2<="0110000"; when32=>jia1<="1111001";jia2<="1101101"; when33=>jia1<="0110011";jia2<="1111001"; when34=>jia1<="1011011";jia2<="0110011"; when35=>jia1<="1011111";jia2<="1011011"; whenothers=>jia1<="0000000";jia2<="0000000"; endcase; casejia1is--記錄第一個數(shù)的值 when"0110000"=>jianum1<=1; when"1101101"=>jianum1<=2; when"1111001"=>jianum1<=3; when"0110011"=>jianum1<=4; when"1011011"=>jianum1<=5; when"1011111"=>jianum1<=6; whenothers=>jianum1<=1; endcase; casejia2is--記錄第二個數(shù)的值 when"0110000"=>jianum2<=1; when"1101101"=>jianum2<=2; when"1111001"=>jianum2<=3; when"0110011"=>jianum2<=4; when"1011011"=>jianum2<=5; when"1011111"=>jianum2<=6; whenothers=>jianum2<=1; endcase; jiasum<=jianum1+jianum2; endif; endif;endprocessJiashow;Yishow:process(clk_out1,Restart,Yi,Jia)--乙隨機數(shù)產(chǎn)生與顯示,并記錄所得出的數(shù)字beginif(restart='1'orjia='1')thenyi1<="0000000";yi2<="0000000";yisum<=2;elsif(clk_out1'EVENTANDclk_out1='1')THEN if(num2=35)then num2<=0;elsifYi='0'thennum2<=num2+1;else casenum2is when0=>Yi1<="0110000";Yi2<="0110000"; --11 when1=>Yi1<="1101101";Yi2<="1101101"; when2=>Yi1<="1111001";Yi2<="1111001"; when3=>Yi1<="0110011";Yi2<="0110011"; when4=>Yi1<="1011011";Yi2<="1011011"; when5=>Yi1<="1011111";Yi2<="1011111"; when6=>Yi1<="0110000";Yi2<="1101101"; --12 when7=>Yi1<="1101101";Yi2<="1111001"; when8=>Yi1<="1111001";Yi2<="0110011"; when9=>Yi1<="0110011";Yi2<="1011011"; when10=>Yi1<="1011011";Yi2<="1011111"; when11=>Yi1<="1011111";Yi2<="0110000"; when12=>Yi1<="0110000";Yi2<="1111001"; --13 when13=>Yi1<="1101101";Yi2<="0110011"; when14=>Yi1<="1111001";Yi2<="1011011"; when15=>Yi1<="0110011";Yi2<="1011111"; when16=>Yi1<="1011011";Yi2<="0110000"; when17=>Yi1<="1011111";Yi2<="1101101"; when18=>Yi1<="0110000";Yi2<="0110011"; --14 when19=>Yi1<="1101101";Yi2<="1011011"; when20=>Yi1<="1111001";Yi2<="1011111"; when21=>Yi1<="0110011";Yi2<="0110000"; when22=>Yi1<="1011011";Yi2<="1101101"; when23=>Yi1<="1011111";Yi2<="1111001"; when24=>Yi1<="0110000";Yi2<="1011011"; --15 when25=>Yi1<="1101101";Yi2<="1011111"; when26=>Yi1<="1111001";Yi2<="0110000"; when27=>Yi1<="0110011";Yi2<="1101101"; when28=>Yi1<="1011011";Yi2<="1111001"; when29=>Yi1<="1011111";Yi2<="0110011"; when30=>Yi1<="0110000";Yi2<="1011111"; --16 when31=>Yi1<="1101101";Yi2<="0110000"; when32=>Yi1<="1111001";Yi2<="1101101"; when33=>Yi1<="0110011";Yi2<="1111001"; when34=>Yi1<="1011011";Yi2<="0110011"; when35=>Yi1<="1011111";Yi2<="1011011"; whenothers=>Yi1<="0000000";Yi2<="0000000"; endcase; caseyi1is--fuzhiyinum1 when"0110000"=>yinum1<=1; when"1101101"=>yinum1<=2; when"1111001"=>yinum1<=3; when"0110011"=>yinum1<=4; when"1011011"=>yinum1<=5; when"1011111"=>yinum1<=6; whenothers=>yinum1<=1; endcase; caseyi2is--fuzhiyinum2 when"0110000"=>yinum2<=1; when"1101101"=>yinum2<=2; when"1111001"=>yinum2<=3; when"0110011"=>yinum2<=4; when"1011011"=>yinum2<=5; when"1011111"=>yinum2<=6; whenothers=>yinum2<=1; endcase; yisum<=yinum1+yinum2; endif; endif;endprocessYishow;compare:process(yi)--按照規(guī)則評判輸贏模塊beginif(Restart='1')thenbeep0<=2;win<=0;jiasignal<=0;yisignal<=0;jiasignal1<=0;yisignal1<=0;jiasignal2<=0;yisignal2<=0;jiasignal3<=0;yisignal3<=0;jiasignal4<=0;yisignal4<=0;jiasignal5<=0;yisignal5<=0;jiasignal6<=0;yisignal6<=0;jiasignal7<=0;yisignal7<=0;elsif(yi'EVENTANDyi='1')then--當乙投擲完畢時進行判決if(jushu=2)then--第一局判斷是否有且僅有一人投擲和為7或11if(jiasum=7orjiasum=11)thenjiasignal<=1;endif;if(yisum=7oryisum=11)thenyisignal<=1;endif;if(jiasignal>yisignal)thenbeep0<=1;win<=1;elsif(jiasignal<yisignal)thenbeep0<=1;win<=2;elsebeep0<=0;endif;jiasum0<=jiasum;yisum0<=yisum;endif;if(jushu=3)then--第二局判斷之后判斷是否和前一局和相同if(jiasum0=jiasum)thenjiasignal1<=1;elsejiasignal1<=0;endif;if(yisum0=yisum)thenyisignal1<=1;elseyisignal1<=0;endif;if(jiasignal1>yisignal1)thenbeep0<=1;win<=1;elsif(jiasignal1<yisignal1)thenbeep0<=1;win<=2;elsebeep0<=0;endif;jiasum1<=jiasum;yisum1<=yisum;endif;if(jushu=4)thenif(jiasum1=jiasum)thenjiasignal2<=1;elsejiasignal2<=0;endif;if(yisum1=yisum)thenyisignal2<=1;elseyisignal2<=0;endif;if(jiasignal2>yisignal2)thenbeep0<=1;win<=1;elsif(jiasignal2<yisignal2)thenbeep0<=1;win<=2;elsebeep0<=0;endif;jiasum2<=jiasum;yisum2<=yisum;endif;if(jushu=5)thenif(jiasum2=jiasum)thenjiasignal3<=1;elsejiasignal3<=0;endif;if(yisum2=yisum)thenyisignal3<=1;elseyisignal3<=0;endif;if(jiasignal3>yisignal3)thenbeep0<=1;win<=1;elsif(jiasignal3<yisignal3)thenbeep0<=1;win<=2;elsebeep0<=0;endif;jiasum3<=jiasum;yisum3<=yisum;endif;if(jushu=6)thenif(jiasum3=jiasum)thenjiasignal4<=1;elsejiasignal4<=0;endif;if(yisum3=yisum)thenyisignal4<=1;elseyisignal4<=0;endif;if(jiasignal4>yisignal4)thenbeep0<=1;win<=1;elsif(jiasignal4<yisignal4)thenbeep0<=1;win<=2;elsebeep0<=0;endif;endif;if(jushu=7)then--第六局后開始比較大小if(jiasum>yisum)thenjiasignal5<=1;elsejiasignal5<=0;endif;if(yisum>jiasum)thenyisignal5<=1;elseyisignal5<=0;endif;if(jiasignal5>yisignal5)thenbeep0<=1;win<=1;elsif(jiasignal5<yisignal5)thenbeep0<=1;win<=2;elsebeep0<=0;endif;endif;if(jushu=8)thenif(jiasum>yisum)thenjiasignal6<=1;elsejiasignal6<=0;endif;if(yisum>jiasum)thenyisignal6<=1;elseyisignal6<=0;endif;if(jiasignal6>yisignal6)thenbeep0<=1;win<=1;elsif(jiasignal6<yisignal6)thenbeep0<=1;win<=2;elsebeep0<=0;endif;endif;if(jushu=9)thenif(jiasum>yisum)thenjiasignal7<=1;elsejiasignal7<=0;endif;if(yisum>jiasum)thenyisignal7<=1;elseyisignal7<=0;endif;if(jiasignal7>yisignal7)thenbeep0<=1;win<=1;elsif(jiasig

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論