JAVA程序设计(13.2)---- Craps赌博游戏设计,综合运用练习

面对对象  监听器 继承 接口 设置窗口 设置图片 设置按钮 设置文字框 随机数

Craps赌博游戏 投2颗色子 ,首轮 7 ,11为玩家胜利 , 2,3,12为庄家胜利;之后玩家投到7就输 ,投到和首轮一样的点数 就赢;

1.先做色子

package com.lovo.homework;

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;

/**
 * 类:骰子
 * @author Abe
 * 属性:点数 图片
 */
public class Dice {
	private int point;
	private static Image[] images = new Image[6];

	static {			//静态加载图片
		for (int i = 0; i < images.length; i++) {
			ImageIcon icon = new ImageIcon("Dice/" + (i + 1) + ".jpg");
			images[i] = icon.getImage();
		}
	}

	/**
	 * 构造器
	 */
	public Dice() {
		this.point = (int)(Math.random() * 6 + 1);
	}

	/**
	 * 绘制一颗骰子
	 * xy坐标 图标大小135*135
	 */
	public void draw(Graphics g, int i , int x, int y) {
		g.drawImage(Dice.images[i], x, y, 135, 135, null);
	}

	public int getPoint() {
		return point;
	}
	public static Image[] getImages() {
		return images;
	}
}

2.窗口 以及主程序

package com.lovo.homework;

import java.awt.Button;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;
/**
 * 类:窗口
 * @author Abe
 * 父类:JFrame
 * 接口:监听器
 * 属性:很多
 */
@SuppressWarnings("serial")
public class MyFrame extends JFrame implements ActionListener {
	private Button b1 = new Button("开始");
	private Button b2 = new Button("停止");
	private Button b3 = new Button("再来一局!");
	public JLabel jl1 = new JLabel();
	public JLabel jl2 = new JLabel();
	public JLabel jl3 = new JLabel();
	private Timer timer = null;
	private Dice p1;
	private Dice p2;
	private int round = 0;
	private int first = 0;
	private boolean gameOver = false;

	/**
	 * 接口 :重写事件监听器
	 * @author Abe
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		Object obj = e.getSource();
		if (!gameOver) {
			if (obj == b1) {
				timer.start();
				jl3.setText("第" +  (round +1) + "轮");
				repaint();
			} else if (obj == b2) {
				timer.stop();
				if (round == 0) {
					first = p1.getPoint() + p2.getPoint();
					jl1.setText("首次投出的点数为:" + first);
					round++;
					switch (first) {
					case 2:
					case 3:
					case 12:
						jl2.setText("玩家首轮投出了" + first + "点,庄家胜出!!");
						gameOver = true;
						break;
					case 7:
					case 11:
						jl2.setText("玩家首轮投出了" + first + "点,玩家赢了!");
						gameOver = true;
					}
				} else if (first == p1.getPoint() + p2.getPoint()) {
					round++;
					jl2.setText("玩家投出了和第一轮一样的" + first + "点,玩家胜出!!");
					gameOver = true;
				} else if (p1.getPoint() + p2.getPoint() == 7) {
					round++;
					jl2.setText("玩家投出了7点,庄家赢了!");
					gameOver = true;
				} else {
					round++;
					jl2.setText("玩家这次投出了" + (p1.getPoint() + p2.getPoint())
							+ "点,游戏继续~");
				}
			} else if (obj == timer) {
				p1 = new Dice();
				p2 = new Dice();
				repaint();
			}
		}
		if (obj == b3 && gameOver == true){
			gameOver = false;
			round = 0;
			jl1.setText("");
			jl2.setText("");
		}
	}

	/**
	 *构造器
	 */
	public MyFrame() {
		this.setTitle("Craps娱乐机");
		this.setSize(800, 600);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.setLayout(null);

		jl1.setBounds(50, 250, 300, 50);
		jl1.setFont(new Font("微软雅黑", Font.BOLD, 24));
		jl2.setBounds(50, 350, 500, 50);
		jl2.setFont(new Font("微软雅黑", Font.BOLD, 24));
		jl3.setBounds(50, 150, 100, 50);
		jl3.setFont(new Font("微软雅黑", Font.BOLD, 24));
		b1.addActionListener(this);
		b2.addActionListener(this);
		b3.addActionListener(this);
		timer = new Timer(100, this);
		b1.setBounds(275, 500, 100, 50);
		b2.setBounds(425, 500, 100, 50);
		b3.setBounds(670, 25, 100, 50);
		this.add(b1);
		this.add(b2);
		this.add(b3);
		this.add(jl1);
		this.add(jl2);
		this.add(jl3);
	}

	/**
	 * 重写:paint方法
	 */
	@Override
	public void paint(Graphics g) {
		super.paint(g);
		if (p1 != null && p2 != null) {
			p1.draw(g, p1.getPoint() - 1, 240, 100);
			p2.draw(g, p2.getPoint() - 1, 425, 100);
		}
	}
}

窗口还有点大…… 懒得调整了……

3.

package com.lovo.homework;
/**
 * 类:执行器?
 * @author Abe
 */
public class CrapsTest {

	public static void main(String[] args) {
		new MyFrame().setVisible(true);
	}
}
时间: 2024-12-16 08:58:43

JAVA程序设计(13.2)---- Craps赌博游戏设计,综合运用练习的相关文章

Craps赌博游戏、百钱白鸡、七星彩选号、抓小偷、21根火柴、10000以内完美数

Craps赌博游戏 游戏规则:同时扔两颗骰子,第一次扔出的点数数7或则11玩家胜,扔出2.3或则12庄家胜利,否则继续扔骰子. 以后只要扔出和第一次相同的点数玩家胜,扔出7庄家胜. 玩家每次进入有1000的筹码,输完游戏结束! 1 public static void gambleGame() { 2 int a = 0; 3 int money = 1000; 4 for (int j = 0;; j++) { 5 if (money > 0) { 6 System.out.println(&qu

Java 两个骰子的 赌博游戏

package com.love; /** * Craps赌博游戏 * * */ public class Test08 { public static int roll(){ return (int) (Math.random() * 6 + 1); } public static void main(String[] args) { int firstPoint, currentPoint; firstPoint = currentPoint = roll() + roll(); Syste

JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样

zzzzZZZZ 1.開始还想贴图的 实在太懒了-- 这是一张麻将 package com.lovo; import java.awt.Graphics; import java.awt.Image; /** * 类 : 麻将牌 * @author Abe 属性:花色 点数 图片 */ public class Mahjong { private Suits suits; private int face; private Image image; /** * 构造器 * * @param su

Craps赌博游戏

public class CrapsGame { public static int roll() { return (int) (Math.random() * 6 + 1); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int money = 10000; int ante = 0; int firstPoint, currentPoint; boolean sequel =

JAVA程序设计(13.1)---- 循环 数组 应用复习,约瑟夫环问题

1.今天基本上上课是复习以前的哦 作业约瑟夫环,30个人围成一圈,从一个人开始数数1,下一个人数 2,数到9的就( ^_^ )/~~拜拜,出局,后面一个人继续数1.....问剩下15个人都是基督徒吗?额--不对--剩下15个人都站在什么位置.用一个数组就解决了--初始化都是0,出局的就赋值1,循环到1的时候不计数,每9个0,最后一个0就变成1,直到出局15人. package com.lovo.josephu; /** * 类:约瑟夫环站位 * @author Abe */ public cla

week13《java程序设计》第13次作业总结

week13<java程序设计>第13次作业总结 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 答: 1.IP与端口:ip和域名相对应,可找到主机.IP+端口(TCP/IP协议中的端口)找到主机上的对应程序. web服务:80 ftp服务:21 Telnet服务:23 2.套接字通信:实现客户端和服务器端的连接. 对从Socket对象中获得的流操作,即可进行网络通信. 建立Socket对象,从Scoket对象上获取流. 对流操作进行网络通信 关闭

基于Java Web的猜歌游戏设计与实现

获取项目源文件,技术交流与指导联系Q:1225467431 摘   要 随着社会的不断发展,越来越多的人面临的压力越来越大,人们渴望随时随地都能放松自我.然而游戏正成为人们释放压力,放松自己最行之有效的娱乐方式之一.而基于Java Web的猜歌游戏以其界面美观,操作简单,对硬件要求低等优点将会备受大家的青睐.系统通过数据库对用户基本信息和歌曲信息进行统一管理,借助经典的框架Servlet对数据进行处理,又选择了前端一些功能强大的插件对数据进行展示,将猜歌与游戏很好的结合起来,意在给用户创造了一个

HeyWeGo小组《Java程序设计》 2015—2016年学期团队项目总结

HeyWeGo小组<Java程序设计> 2015—2016年学期团队项目总结 题目简介 一个简单的扫雷小游戏,在12*12的方格盘上,首先可以设定雷的个数,然后点击开始程序就会随机布雷,开始游戏后如果点到雷就会显示游戏结束,如果没有,会出现数字表示周围一圈雷的个数,以此推理当扫出所有雷将显示游戏胜利. 游戏项目规划: 确定游戏中方块格子的个数 确定游戏中地雷的个数(初始10个),完成布雷 计算每个方块周围的雷数,在方块周围本身没有地雷的情况下,统计周围地雷的个数 若周围没有地雷则翻开周围的空白

Java程序设计 实验三

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计   班级:1353       姓名:郭皓  学号:20135327 成绩:             指导教师:娄嘉鹏      实验日期: 实验密级:         预习程度:             实验时间: 仪器组次:          必修/选修:选修       实验序号:3 实验名称:                敏捷开发与XP实践 实验目的与要求: 完成实验.撰写实验报告,实验报告以