JavaFX实验2 石头剪刀布

本文介绍了如何用JavaFX实现一款计算机与玩家交互的石头剪刀布游戏,包括用户界面设计、随机选择算法和游戏结果展示。通过代码示例展示了游戏流程及胜负统计功能,适合初学者理解事件驱动编程和界面设计。
编写一个和计算机交互的“石头-剪刀-布”游戏程序。当两个人玩的时候,每个人要同时选择一项(用手势表示),然后决出胜负。规则为石头赢剪刀,剪刀赢布,布赢石头。程序必须随机选取一项但不显示给玩家,然后提示用户选择。当用户选择后,程序同时显示出计算机和用户的选择并且输出游戏结果。游戏一直进行到用户退出为止,然后输出双方输赢的次数及和局的次数。



实验过程

1. 目录结构
2. 实验代码
3. 实验效果



1 . 目录结构

在这里插入图片描述



2. 实验代码

MainController

package tech.zger.www.controller;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

/**
 * @author zg
 * @create 2021/11/16 0:45
 */
public class MainController implements Initializable {
   
   
    private static final int SCISSOR = 0;
    private static final int CLOTH = 1;
    private static final int STONE = 2;
    /**
     * 电脑玩家的选择
     */
    @FXML
    private ImageView computer;
    /**
     * 玩家的选择
     */
    @FXML
    private ImageView people;
    /**
     * 平局
     */
    private int draw;
    private int win;
    private int fail;
    /**
     * 完成一局游戏需要点击 再来一次 才能进行下一次游戏
     */
    private boolean changeable = true;

    @FXML
    private void clickScissors() {
   
   
        if (changeable) {
   
   
            this.people.setImage(new Image(getClass().getResourceAsStream("/tech/zger/www/images/scissor.png")));
            int computerInput = this.generateRandomSign();
            if (computerInput == SCISSOR) {
   
   
                this.draw++;
                showDraw();
            } else if (computerInput == CLOTH) {
   
   
                this.win++;
                showWin();
            } else {
   
   
                this.fail++;
                showFail();
            }
            changeable = false;
        }
    }

    @FXML
    private void clickCloth() {
   
   
        if (changeable) {
   
   
            this.people.setImage(new Image(getClass().getResourceAsStream("/tech/zger/www/images/cloth.png")));
            int computerInput = this.generateRandomSign();
            if (computerInput == CLOTH) {
   
   
                this.draw++;
                showDraw();
            } else if (computerInput == STONE) {
   
   
                this.win++;
                showWin();
            } else {
   
   
                this.fail++;
                showFail();
            }
            changeable = false;
        }
    }

    @FXML
    private void clickStone() {
   
   
        if (changeable) {
   
   
            this.people.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值