javafx写一个小游戏2-石头剪刀布

套路和之前的一样,不知道的请参考https://blog.csdn.net/A5wa41s/article/details/107189003
废话不多说,直接上代码
1.Main.java

package application;
	
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;

public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		try {
			Parent root = FXMLLoader.load(getClass().getResource("/application/ui.fxml"));//加载布局文件ui.fxml
			primaryStage.setTitle("石头剪刀布");						//设置标题
			primaryStage.setScene(new Scene(root));				//设置主面板
			primaryStage.show();								//显示主界面
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		launch(args);
	}
}

2.MyController.java

package application;

import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundImage;
import javafx.scene.layout.BackgroundSize;

public class MyController implements Initializable {	
	@FXML private ImageView iv1;		//敌人控件
	@FXML private ImageView iv2;		//自己控件
	@FXML private Button jd;			//剪刀控件
	@FXML private Button st;			//石头控件
	@FXML private Button bu;			//布控件
	
	private Image jdImage = new Image("jd.jpg");		//剪刀图片
	private Image stImage = new Image("st.jpg");		//石头图片
	private Image buImage = new Image("bu.jpg");		//布图片
	private	BackgroundSize bs =  new BackgroundSize(150, 150, false, false, false, false);	//设置画的图形的大小
	private BackgroundImage biJd = new BackgroundImage(jdImage, null, null, null, bs);		//背景剪刀
	private BackgroundImage biSt = new BackgroundImage(stImage, null, null, null, bs);		//背景石头
	private BackgroundImage biBu = new BackgroundImage(buImage, null, null, null, bs);		//背景布
	
	private int my = 0;			//我出的		1为石头	2为剪刀	3为布
	private int enemy = 0;		//敌人出的
	
	@Override
	public void initialize(URL arg0, ResourceBundle arg1) {	//首先调用此方法
		again(); 									//重新开始
		jd.setBackground(new Background(biJd));		//设置剪刀的图片
		st.setBackground(new Background(biSt));		//设置石头的图片
		bu.setBackground(new Background(biBu));		//设置布的图片
	}
	//点击图片开始游戏
	public void play(ActionEvent event) {
		Button b = (Button) event.getSource();		//获得点击的按钮
		my = Integer.parseInt(b.getId());			//我出
		switch (my) {
			case 1: 	//剪刀
				iv2.setImage(jdImage);
				break;
			case 2: 	//石头
				iv2.setImage(stImage);
				break;
			case 3: 	//布
				iv2.setImage(buImage);
				break;
		}
		enemy();									//敌人出
		check(); 									//判断输赢
	}
	//敌人随机
	private void enemy() {
		Random r = new Random();	
		enemy = r.nextInt(3)+1;			//生成1-3随机数	敌人随机出
		switch(enemy) {
			case 1:			//敌人出剪刀
				iv1.setImage(jdImage);
				break;
			case 2:			//敌人出石头
				iv1.setImage(stImage);			
				break;
			case 3:			//敌人出布
				iv1.setImage(buImage);
				break;
		}
	}
	//判断输赢
	private void check() {
		if(my == 1) {		//我出了剪刀
			switch (enemy) {
				case 1: 	//敌人出了剪刀
					System.out.println("平局!");
					break;
				case 2: 	//敌人出了石头
					System.out.println("你输了!");
					break;
				case 3: 	//敌人出了布
					System.out.println("你赢了!");
					break;
			}
		}else if(my == 2) {	//我出了石头
			switch (enemy) {
				case 1: 	//敌人出了剪刀
					System.out.println("你赢了");
					break;
				case 2: 	//敌人出了石头
					System.out.println("平局!");
					break;
				case 3: 	//敌人出了布
					System.out.println("你输了!");
					break;
			}
		}else if(my == 3) {	//我出了布
			switch (enemy) {
				case 1: 	//敌人出了剪刀
					System.out.println("你输了!");
					break;
				case 2: 	//敌人出了石头
					System.out.println("你赢了");
					break;
				case 3: 	//敌人出了布
					System.out.println("平局!");
					break;
			}
		}
	}
	//重新开始
	private void again() {
		my = 0;		//我还没出
		enemy = 0;	//敌人也没出
		iv1.setImage(null);
		iv2.setImage(null);
	}
}

3.ui.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.image.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.shape.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane maxHeight="800.0" maxWidth="600.0" minHeight="800.0" minWidth="600.0" prefHeight="800.0" prefWidth="600.0" style="-fx-background-color: #eeeeee;" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MyController">
   <children>
      <Line endX="600.0" layoutY="300.0" strokeWidth="5.0" />
      <Line endX="600.0" layoutY="600.0" strokeWidth="5.0" />
      <Button id="1" fx:id="jd" layoutX="25.0" layoutY="625.0" maxHeight="150.0" maxWidth="150.0" minHeight="150.0" minWidth="150.0" mnemonicParsing="false" onAction="#play" prefHeight="150.0" prefWidth="150.0" />
      <Button id="2" fx:id="st" layoutX="225.0" layoutY="625.0" maxHeight="150.0" maxWidth="150.0" minHeight="150.0" minWidth="150.0" mnemonicParsing="false" onAction="#play" prefHeight="150.0" prefWidth="150.0" />
      <Button id="3" fx:id="bu" layoutX="425.0" layoutY="625.0" maxHeight="150.0" maxWidth="150.0" minHeight="150.0" minWidth="150.0" mnemonicParsing="false" onAction="#play" prefHeight="150.0" prefWidth="150.0" />
      <ImageView id="iv1" fx:id="iv1" fitHeight="280.0" fitWidth="280.0" layoutX="160.0" layoutY="10.0" pickOnBounds="true" preserveRatio="true" />
      <ImageView id="iv2" fx:id="iv2" fitHeight="280.0" fitWidth="280.0" layoutX="160.0" layoutY="310.0" pickOnBounds="true" preserveRatio="true" />
   </children>
</AnchorPane>

运行效果如下:
在这里插入图片描述

学习交流请加QQ群:1062828738

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妍芯电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值