日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java實現(xiàn)擲骰子控制臺和窗體兩種方法

瀏覽:21日期:2023-02-13 10:55:26

本文實例為大家分享了Java控制臺和窗體實現(xiàn)擲骰子的具體代碼,供大家參考,具體內(nèi)容如下

程序目標:同時3擲骰子,讓骰子轉(zhuǎn)動若干次后停下來的正面朝上的數(shù)字之和大于9 則為大,小于等于9則為小用于需要提前選擇押大還是小,程序結(jié)束返回是否押中的結(jié)果。

1.擲骰子控制臺實現(xiàn)

本程序分為三層:

表示層 :用類Player2 實現(xiàn) 業(yè)務(wù)邏輯層:類DiceGame2 實現(xiàn) 數(shù)據(jù)/技術(shù)服務(wù)層:類Dice2 實現(xiàn)

Dice2 類 實現(xiàn)Runnable接口,重新run()方法來設(shè)置每個骰子轉(zhuǎn)動10次 ,并在停下來后獲取正面朝上的值。DiceGame2 類中創(chuàng)建三個線程來模擬同時擲3個骰子,并能在在骰子轉(zhuǎn)動結(jié)束后得到總點數(shù)和每個骰子的點數(shù)。其中roll()方法開啟線程, result()計算點數(shù)Player2 類 主函數(shù)創(chuàng)建菜單,提示用戶輸入操作。并在控制臺顯示結(jié)果。

代碼如下:

public class Player2 { //表示層 public static void main(String[] args) throws InterruptedException { Scanner sc = new Scanner(System.in); while (true) { System.out.println('**************擲 骰 子 游 戲***************'); System.out.println('請輸入0表示押小,輸入1表示押大,輸入2表示退出'); int i = sc.nextInt(); if(i == 2) System.exit(0); DiceGame2 d = new DiceGame2(); d.roll(); Thread.sleep(500);// 主線程等待 int n = d.result(); if (i == 0 && n <= 9) System.out.println('恭喜你,押小贏了'); else if (i == 0 && n > 9) System.out.println('很遺憾,押小輸了'); else if (i == 1 && n > 9) System.out.println('恭喜你,押大贏了'); else if (i == 1 && n <= 9) System.out.println('很遺憾,押大輸了'); System.out.println(); } }} class DiceGame2 { //業(yè)務(wù)邏輯層 Dice2 d1, d2, d3; public DiceGame2() { } public void roll() { // 同時三個擲骰子 d1 = new Dice2(); d2 = new Dice2(); d3 = new Dice2(); Thread t1 = new Thread(d1); Thread t2 = new Thread(d2); Thread t3 = new Thread(d3); t1.start(); t2.start(); t3.start(); } public int result() { // 計算點數(shù) int sum = 0; int i = d1.getUpNum(); int j = d2.getUpNum(); int k = d3.getUpNum(); sum = i + j + k; System.out.println('擲得點數(shù)和為:' + sum + ' [' + i + ' - ' + j + ' - ' + k + ' ]'); return sum; }//} class Dice2 implements Runnable { // 骰子類 數(shù)據(jù)/技術(shù)服務(wù)層 private int upnum; public Dice2() { this.upnum = 1; } @Override public void run() { int count = 10;// 設(shè)置每顆骰子轉(zhuǎn)動10次 while (count > 0) { upnum = new Random().nextInt(6) + 1; System.out.println(Thread.currentThread().getName() + ' ' + upnum); count--; try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } public int getUpNum() { return upnum; }}2.擲骰子窗體實現(xiàn)

窗體程序思路和控制臺一樣,只是把顯示界面由控制臺改為窗體。類SiziGame extends JFrame implements ActionListener類IconThread implements Runnable首先,SiziGame類通過構(gòu)造器初始化設(shè)置窗體和里面控件,并且把代表6種點數(shù)的圖片加載到imgs集合里面,還要給開始按鈕綁定監(jiān)聽事件函數(shù)。其次,重寫actionPerformed()函數(shù),來實現(xiàn)按鈕觸發(fā)3個骰子轉(zhuǎn)動。在這個函數(shù)里開始3個線程讓骰子圖片轉(zhuǎn)動起來,并在轉(zhuǎn)動結(jié)束后計算機每個骰子顯示圖片對應(yīng)的點數(shù)和總點數(shù)。再根據(jù)用戶之前選擇的押大或押小返回輸贏結(jié)果。然后,IconThread 類重寫run()方法,來實現(xiàn)圖片的動態(tài)效果。通過隨機生成[0-6)的隨機整數(shù)作為imgs集合的index,再根據(jù)索引從imgs里取對應(yīng)的圖片顯示在窗體上,由于線程運行速度較快,且設(shè)置了多次取圖片的動作從而形成了動態(tài)效果。注意的是集合下標為[0-5],所以在SiziGame類中的result()方法計算點數(shù)時要+1。

public class SiziGame extends JFrame implements ActionListener{ private JLabel lb1; private JLabel lb2; private JLabel lb3; private JLabel lbNote; private JComboBox<String> cmb; private JButton btn; private JLabel labResult;private static List<Icon> imgs = new ArrayList<Icon>();IconThread it1,it2,it3; Thread t1,t2,t3;public static void main(String[] args) {new SiziGame(); }public SiziGame(){ this.setLocationRelativeTo(null);this.setBounds(200, 50, 380, 297);this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);getContentPane().setLayout(null);this.setResizable(false); lb1 = new JLabel('');lb1.setIcon(new ImageIcon( getClass().getResource('img/a.jpg'))); lb1.setBounds(30, 30, 96, 96);getContentPane().add(lb1);lb2 = new JLabel('');lb2.setIcon(new ImageIcon( getClass().getResource('img/a.jpg')));lb2.setBounds(136, 30, 96, 96);getContentPane().add(lb2); lb3 = new JLabel('');lb3.setIcon(new ImageIcon( getClass().getResource('img/a.jpg')));lb3.setBounds(242, 30, 96, 96);getContentPane().add(lb3);lbNote = new JLabel('押');lbNote.setBounds(40, 200, 30, 30);getContentPane().add(lbNote); cmb = new JComboBox<String>();cmb.setBounds(80, 200, 60, 30);getContentPane().add(cmb);cmb.addItem('大');cmb.addItem('小');btn = new JButton('START');btn.setBounds(220, 190, 100, 50);btn.addActionListener(this);getContentPane().add(btn);labResult = new JLabel('結(jié)果'); //結(jié)果labResult.setBounds(136, 156, 126, 27);getContentPane().add(labResult);this.setVisible(true);imgs.add(new ImageIcon(getClass().getResource('img/1.gif')));imgs.add(new ImageIcon(getClass().getResource('img/2.gif')));imgs.add(new ImageIcon(getClass().getResource('img/3.gif')));imgs.add(new ImageIcon(getClass().getResource('img/4.gif')));imgs.add(new ImageIcon(getClass().getResource('img/5.gif')));imgs.add(new ImageIcon(getClass().getResource('img/6.gif')));it1 = new IconThread(lb1, imgs); it2 = new IconThread(lb2, imgs); it3 = new IconThread(lb3, imgs); t1 = new Thread(it1); t2 = new Thread(it2); t3 = new Thread(it3); }// public void thread(){ /*IconThread it1 = new IconThread(lb1, imgs); IconThread it2 = new IconThread(lb2, imgs); IconThread it3 = new IconThread(lb3, imgs); Thread t1 = new Thread(it1); Thread t2 = new Thread(it2); Thread t3 = new Thread(it3);*/ it1 = new IconThread(lb1, imgs); it2 = new IconThread(lb2, imgs); it3 = new IconThread(lb3, imgs); t1 = new Thread(it1); t2 = new Thread(it2); t3 = new Thread(it3); /* t1.start(); t2.start(); t3.start(); try { t1.join(); t2.join(); t3.join(); } catch (InterruptedException e) {}*/} @Override public void actionPerformed(ActionEvent args) { String ya = cmb.getSelectedItem().toString(); System.out.println('n你本次押的'+ya); thread(); t1.start(); t2.start(); t3.start();try { t1.join(); t2.join(); t3.join(); } catch (InterruptedException e) {} int i = result(lb1);int j = result(lb2);int k = result(lb3);int sum = i + j + k;System.out.println('擲得點數(shù)和為:' + sum + ' [' + i + ' - ' + j + ' - ' + k + ' ]'); try { Thread.sleep(1000); } catch (InterruptedException e) {}if (sum > 9 && '大'.equals(ya) || sum <= 9 && '小'.equals(ya)) { labResult.setText('贏'); labResult.setForeground(Color.GREEN); labResult.setFont(new Font('宋體', Font.BOLD, 30));} else { labResult.setText('輸'); labResult.setForeground(Color.red); labResult.setFont(new Font('宋體', Font.BOLD, 30));} }// public int result(JLabel lab) { Icon icon = lab.getIcon();// 獲取當前骰子圖片 int sum = 0; for (int i = 0; i < imgs.size(); i++) { if (icon.equals(imgs.get(i))) { //取出和lab最后圖片對應(yīng)的點數(shù) sum += (i + 1); break; } } return sum; }// }

Java實現(xiàn)擲骰子控制臺和窗體兩種方法

Java實現(xiàn)擲骰子控制臺和窗體兩種方法

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费精品国产| 国产精品第一国产精品| 国产精品3区| 亚洲黄色中文字幕| 视频一区二区三区入口| 国产日产高清欧美一区二区三区 | 日日夜夜免费精品视频| 国产91在线播放精品| 欧美亚洲国产一区| 麻豆久久久久久久| 欧美日韩一区二区高清| 不卡在线一区| 欧美丰满日韩| 日韩成人一级| 亚洲一区二区三区中文字幕在线观看 | 免费精品视频最新在线| 国产精品亚洲四区在线观看| 日韩在线短视频| 高清av不卡| 卡一卡二国产精品| 亚洲精品a级片| 国产精品成人3p一区二区三区| 国产精品久久亚洲不卡| 日韩影院精彩在线| 久久午夜精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 女人天堂亚洲aⅴ在线观看| 日韩一区精品视频| 蜜臀精品久久久久久蜜臀| 99亚洲精品| 蜜臀久久99精品久久久久宅男| 亚洲在线一区| 日韩av网站在线免费观看| 蜜桃精品视频| 蜜臀久久精品| 中文亚洲欧美| 成人av二区| 久久精品72免费观看| 福利在线一区| 午夜欧美精品久久久久久久| 四虎成人精品一区二区免费网站| 7777精品| 久久久久久夜| 亚洲免费激情| 欧美激情99| 99日韩精品| 日韩福利视频导航| 日韩.com| 日本不卡视频一二三区| 岛国精品一区| 亚洲精品人人| 久久精品国产福利| 老牛影视一区二区三区| 精品久久视频| 在线观看亚洲精品福利片| 精品视频国内| 婷婷精品久久久久久久久久不卡| 岛国av在线播放| 亚洲精品自拍| 久久精品高清| 粉嫩av一区二区三区四区五区| 午夜在线播放视频欧美| 国产伊人久久| 久久国产视频网| 日本 国产 欧美色综合| 日韩在线短视频| 日本va欧美va精品| 亚洲成人一区| 国产成人精选| 69精品国产久热在线观看| 亚洲精品系列| 电影91久久久| 亚洲精品1区| 国产精品国产一区| 久久精品一区二区国产| 日韩高清不卡一区二区| 免费看黄色91| 最新国产精品视频| 亚洲性视频在线| 亚欧成人精品| 在线观看一区| 久久精品72免费观看| 婷婷五月色综合香五月| 精品欠久久久中文字幕加勒比| 麻豆久久一区二区| 精品中国亚洲| 欧美在线资源| 日本va欧美va精品| 国产日韩电影| 亚洲久久在线| 国产精品夜夜夜| 精品国产乱码久久久| 蜜臀a∨国产成人精品| 亚洲啊v在线| 男人操女人的视频在线观看欧美| 欧美亚洲自偷自偷| 国产探花一区| 91欧美国产| 国产精品嫩草99av在线| 国产极品一区| 首页欧美精品中文字幕| 精品一区二区三区中文字幕| 欧美freesex黑人又粗又大| 亚洲午夜国产成人| 成人va天堂| 久久不卡国产精品一区二区| 欧美在线观看视频一区| 欧美激情网址| 亚洲美女久久| 99成人在线| 色在线视频观看| 日av在线不卡| 久久久人人人| 精品五月天堂| 婷婷精品在线| 日韩精品一区第一页| 亚洲天堂免费电影| 美女精品久久| 久久国际精品| 日韩高清一区| 国产精品日韩久久久| 久久久国产亚洲精品| 精品久久久久中文字幕小说| 日本欧美在线| 日本成人中文字幕| 亚洲人www| 久久久久国产精品一区二区| 国产精品欧美大片| 欧美日一区二区三区在线观看国产免| 亚洲成av在线| 九九九精品视频| 国产精品一区二区精品| 日本免费在线视频不卡一不卡二| 免费人成黄页网站在线一区二区| 狠狠色综合网| 亚洲欧美视频一区二区三区| 久久国产精品久久久久久电车| 国产精品视区| 丝袜脚交一区二区| 日韩午夜电影| 综合激情网...| 欧美精品羞羞答答| 亚洲一区日韩| 日韩高清不卡一区二区| 欧美亚洲三级| 亚洲精品在线影院| 欧美成人亚洲| 日韩精品欧美成人高清一区二区| 国产人成精品一区二区三| 久久av国产紧身裤| 一区福利视频| 亚洲欧美高清| 久久久久久久久丰满| 日本免费在线视频不卡一不卡二| 香蕉久久精品| 喷白浆一区二区| 久久久精品区| 欧美精品激情| 精品国产成人| 亚州精品视频| 国产成人精品一区二区免费看京| 欧美在线亚洲| 都市激情国产精品| 精品一区二区三区中文字幕在线| 久久亚洲视频| 在线一区电影| 久久麻豆精品| 久久中文欧美| 四虎成人精品一区二区免费网站| 新版的欧美在线视频| 精品国产亚洲一区二区三区在线| 亚洲欧洲日韩| 亚洲精品大全| 亚洲精品在线国产| 四虎精品一区二区免费| 久久国产小视频| 久久中文字幕一区二区| 日韩av午夜在线观看| 涩涩涩久久久成人精品| 蜜桃视频欧美| 国产精品久久久久久久免费观看| 国产精品a久久久久| 精品国产亚洲一区二区三区大结局| 欧美一区二区三区久久| 亚洲免费一区三区| 欧美国产先锋| 日韩精品免费视频一区二区三区| 日韩精品久久久久久久软件91| 91亚洲国产高清| 久久狠狠久久| 激情欧美丁香| 欧美激情国产在线| 精品国产网站| 欧美精品1区| 国产欧美一区二区三区精品观看| 国产精品视区| 久久视频精品| 久久久久99| 日韩免费高清| 国产精品毛片一区二区在线看|