javafx写一个小游戏-井字棋

2023-10-29

学了几天的javafx,感觉非常好用,自己写了一个小游戏,如有不足,希望大佬加以指正,谢谢。

1.先写UI界面

新建一个ui.fxml文件,用于显示ui界面
界面效果如下:
在这里插入图片描述
代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.shape.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" minWidth="600.0" prefHeight="600.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
 fx:controller="application.MyController"><!--  此处添加fx:controller="xxxxr"来添加ui界面的功能处理 -->
   <children>
      <GridPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" minWidth="600.0" prefHeight="600.0" prefWidth="600.0" style="-fx-grid-lines-visible: true;">
        <columnConstraints>
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
        </columnConstraints>
        <rowConstraints>
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <Button  maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false"  prefHeight="200.0" prefWidth="200.0" />
            <Button  layoutX="10.0" layoutY="10.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false"  prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" />
            <Button  layoutX="210.0" layoutY="10.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false"  prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" />
            <Button  layoutX="10.0" layoutY="10.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false"  prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1" />
            <Button  layoutX="10.0" layoutY="210.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
            <Button  layoutX="10.0" layoutY="10.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="1" />
            <Button  maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false"  prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="2" />
            <Button maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false"  prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />
            <Button  maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false"  prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="2" />
         </children>
      </GridPane>
   </children>
</AnchorPane>

二.加载布局文件

在Main.java中,通过FXMLLoader.load()加载布局文件,
代码如下:

FXMLLoader.load(getClass().getResource("/application/ui.fxml")); //加载布局文件ui.fxml              

三.处理ui界面的功能

新建一个类,实现Initializable功能。
代码如下:

package application;

public class MyController implements Initializable {	
	
	@Override
	public void initialize(URL arg0, ResourceBundle arg1) {	//首先调用此方法
		
	}
}

在ui.fxml里添加 fx:controller="application.MyController"后,

 fx:controller="application.MyController"	//controller的名字和位置根据自己的配置选择

在MyController.java里可以用@FXML注解将属性分享到ui界面上

@FXML private Button bu;			//按钮控件

然后在ui.fxml文件里使用fx:id便可以绑定控件

<Button fx:id="b1" />		//绑定MyController中的属性

而按钮的点击方法可以通过设置方法的参数,如下:

public void play(ActionEvent event) {
		...
}

将方法分享到ui界面上,在ui界面上使用fx:onAction进行绑定

<onAction="#action">	//绑定点击的函数

完整代码如下:
1.Main.java

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

public class Main extends Application {
	
	@Override
	public void start(Stage primaryStage) {
		try {	
			Parent root = FXMLLoader.load(getClass()			//加载布局文件ui.fxml
                    .getResource("/application/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.Optional;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.DialogPane;
import javafx.scene.image.Image;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundImage;
import javafx.scene.layout.BackgroundSize;

public class MyController implements Initializable {
	
	private Image imageX = new Image("x.jpg");	//图片X
	private Image imageO = new Image("o.jpg");	//图片O
	private boolean flag = true;				//标志物,决定当前是画X还是画O

	@FXML private Button b1;			//通过@FXML来绑定控件
	@FXML private Button b2;			//b1-b9代表9个格子
	@FXML private Button b3;
	@FXML private Button b4;
	@FXML private Button b5;
	@FXML private Button b6;
	@FXML private Button b7;
	@FXML private Button b8;
	@FXML private Button b9;
	private int[] r = new int[9];	//分别代表9个棋子	-1代表X 	1代表O
	
	private ButtonType buttonAgain = new ButtonType("重新开始");		//重新开始的按钮
	private ButtonType buttonOver = new ButtonType("结束游戏");		//重新开始的按钮
	private Alert alt = new Alert(AlertType.CONFIRMATION);			//游戏结束对话框
	
	@Override
	public void initialize(URL arg0, ResourceBundle arg1) {	//首先调用此方法
		setBackgroundEmpty();	//清空所有背景图片
		alt.setTitle("游戏结束!"); 	//设置对话框的标题
		alt.getButtonTypes().setAll(buttonAgain,buttonOver);	//添加按钮到对话框上
	}
	private	BackgroundSize bs =  new BackgroundSize(200, 200, false, false, false, false);	//设置画的图形的大小
	private BackgroundImage bX = new BackgroundImage(imageX, null, null, null, bs);		//图形X
	private BackgroundImage bO = new BackgroundImage(imageO, null, null, null, bs);		//图形O	
	
	//点击按钮时调用此方法
	public void action(ActionEvent event) {
		Button b = (Button) event.getSource();		//获得点击的对象
		int id = Integer.parseInt(b.getId().trim().substring(1))-1;	//通过按钮的id获得位置 例如是b1 得到0
		if(b.getBackground() == null) {		//如果还没有下这个位置
			if(flag == true) {					//该画X了
				b.setBackground(new Background(bX));	//画X
				r[id] = -1;
				flag = false;	//下一个应该画O
			}else {								//该画O了
				b.setBackground(new Background(bO));	//画O
				r[id] = 1;
				flag = true;	//下一个应该画X
			}
			check();
		}
	}
	//清空所有按钮的背景
	private void setBackgroundEmpty() {
		b1.setBackground(null);b2.setBackground(null);b3.setBackground(null);	
		b4.setBackground(null);b5.setBackground(null);b6.setBackground(null);
		b7.setBackground(null);b8.setBackground(null);b9.setBackground(null);
	}
	//重新开始
	private void again() {
		setBackgroundEmpty();			//清空背景
		r = new int[9];					//重新计数
	}
	//判断是否满足胜利条件
	private void check() {
		if(r[0]+r[1]+r[2]==3			//第一排横着3个O
		|| r[3]+r[4]+r[5]==3			//第二排横着3个O
		|| r[6]+r[7]+r[8]==3			//第三排横着3个O
		|| r[0]+r[3]+r[6]==3			//第一列竖着3个O
		|| r[1]+r[4]+r[7]==3			//第二列竖着3个O
		|| r[2]+r[5]+r[8]==3			//第三列竖着3个O
		|| r[0]+r[4]+r[8]==3			//  \的3个O
		|| r[2]+r[4]+r[6]==3) {			//  /的3个O
			alt.setHeaderText("O赢了");						//设置对话框内容
			Optional<ButtonType> result = alt.showAndWait();	//显示对话框
			if (result.get() == buttonAgain){		//再来一次
			    again();
			}else {
				System.exit(0);		//结束游戏
			}
		}
		if(r[0]+r[1]+r[2]==-3			//第一排横着3个X
		|| r[3]+r[4]+r[5]==-3			//第二排横着3个X
		|| r[6]+r[7]+r[8]==-3			//第三排横着3个X
		|| r[0]+r[3]+r[6]==-3			//第一列竖着3个X
		|| r[1]+r[4]+r[7]==-3			//第二列竖着3个X
		|| r[2]+r[5]+r[8]==-3			//第三列竖着3个X
		|| r[0]+r[4]+r[8]==-3			//  \的3个X
		|| r[2]+r[4]+r[6]==-3) {
			alt.setHeaderText("X赢了");						//设置对话框内容
			Optional<ButtonType> result = alt.showAndWait();	//显示对话框
			if (result.get() == buttonAgain){		//再来一次
			    again();
			}else {
				System.exit(0);		//结束游戏
			}
		}	
		//所有格子都被点了 但是没有分出胜负
		if(r[0]!=0 && r[1]!=0 && r[2]!=0	
		&& r[3]!=0 && r[4]!=0 && r[5]!=0
		&& r[6]!=0 && r[7]!=0 && r[8]!=0) {
			alt.setHeaderText("平局");						//设置对话框内容
			Optional<ButtonType> result = alt.showAndWait();	//显示对话框
			if (result.get() == buttonAgain){		//再来一次
			    again();
			}else {
				System.exit(0);		//结束游戏
			}
		}
	}
}

3.ui.fxml

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

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

<AnchorPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" minWidth="600.0" prefHeight="600.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MyController">
   <children>
      <GridPane maxHeight="600.0" maxWidth="600.0" minHeight="600.0" minWidth="600.0" prefHeight="600.0" prefWidth="600.0" style="-fx-grid-lines-visible: true;">
        <columnConstraints>
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
        </columnConstraints>
        <rowConstraints>
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <Button fx:id="b1" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#action" prefHeight="200.0" prefWidth="200.0" />
            <Button fx:id="b2" layoutX="10.0" layoutY="10.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#action" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" />
            <Button fx:id="b3" layoutX="210.0" layoutY="10.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#action" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" />
            <Button fx:id="b4" layoutX="10.0" layoutY="10.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#action" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1" />
            <Button fx:id="b5" layoutX="10.0" layoutY="210.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#action" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
            <Button fx:id="b6" layoutX="10.0" layoutY="10.0" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#action" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="1" />
            <Button fx:id="b7" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#action" prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="2" />
            <Button fx:id="b8" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#action" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2" />
            <Button fx:id="b9" maxHeight="200.0" maxWidth="200.0" minHeight="200.0" minWidth="200.0" mnemonicParsing="false" onAction="#action" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="2" />
         </children>
      </GridPane>
   </children>
</AnchorPane>

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

学习交流请加QQ群:1062828738

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javafx写一个小游戏-井字棋 的相关文章

  • Android 中的列表(特别是 RecyclerView 和 CardView)如何工作

    请原谅我问这个问题 但我是 Android 开发新手 尽管我正在尝试了解developer android com 网站上的基础知识 但大多数示例 即使他们说它们是为 Android Studio 构建的 尚未设置为使用 Gradle 因此
  • Reactive Spring 不支持 HttpServletRequest 作为 REST 端点中的参数?

    我创建了一个 RestController 如下所示 RestController public class GreetingController RequestMapping value greetings method RequestM
  • 您建议使用哪种压缩(GZIP 是最流行的)servlet 过滤器?

    我正在寻找一个用于大容量网络应用程序的 GZIP servlet 过滤器 我不想使用容器特定的选项 要求 能够压缩响应负载 XML Faster 已在大批量应用的生产中得到验证 应适当设置适当内容编码 跨容器移植 可选择解压缩请求 谢谢 我
  • Android 中 localTime 和 localDate 的替代类有哪些? [复制]

    这个问题在这里已经有答案了 我想使用从 android API 获得的长值 该值将日期返回为长值 表示为自纪元以来的毫秒数 我需要使用像 isBefore plusDays isAfter 这样的方法 Cursor managedCurso
  • 为什么Iterator接口没有add方法

    In IteratorSun 添加了remove 方法来删 除集合中最后访问的元素 为什么没有add方法来向集合中添加新元素 它可能对集合或迭代器产生什么样的副作用 好的 我们开始吧 设计常见问题解答中明确给出了答案 为什么不提供 Iter
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • 是否可以从 servlet 内部以编程方式设置请求上下文路径?

    这是一个特殊情况 我陷入了处理 企业 网络应用程序的困境 企业应用程序正在调用request getContext 并将其与另一个字符串进行比较 我发现我可以使用 getServletContext getContextPath 获取 se
  • 如何通过注解用try-catch包装方法?

    如果应该在方法调用中忽略异常 则可以编写以下内容 public void addEntryIfPresent String key Dto dto try Map
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 在 Clojure 中解压缩 zlib 流

    我有一个二进制文件 其内容由zlib compress在Python上 有没有一种简单的方法可以在Clojure中打开和解压缩它 import zlib import json with open data json zlib wb as
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • Lombok @Builder 不创建不可变对象?

    在很多网站上 我看到 lombok Builder 可以用来创建不可变的对象 https www baeldung com lombok builder singular https www baeldung com lombok buil
  • 如何从 Ant 启动聚合 jetty-server JAR?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • 如何让 Emma 或 Cobertura 与 Maven 一起报告其他模块中源代码的覆盖率?

    我有一个带有 Java 代码的多模块 Maven 设置 我的单元测试在其中一个模块中测试多个模块中的代码 当然 这些模块具有相互依赖性 并且在测试执行之前根据需要编译所有相关模块中的代码 那么 如何获得整个代码库覆盖率的报告 注意 我不是问
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu

随机推荐

  • Django框架全面讲解 -- Model

    Django提供了一个抽象层 Model 来构建和管理Web应用程序的数据 django中遵循 Code Frist 的原则 即 根据代码中定义的类来自动生成数据库表 关系对象映射 Object Relational Mapping 简称O
  • ntohs, ntohl, htons,htonl的比较和详解

    假设在x86平台上 有一个int型变量 在内存中的内部由低到高分别是 0x12 0x34 0x56 0x78当通过网络发送该数据时 正确的发送顺序是 0x78 0x56 0x34 0x12 X86 系列 CPU都是 little endia
  • selenium与自动化测试成神之路

    在群里总是会遇到很多人问低级问题 写了一个selenium脚本 却执行失败 跑到群里来问 大神 这里为什么会报错 很多都是明显的语法问题 一问方知 今天刚刚学selenium 之前也没有语法基础 没学过Java 没学过Python 就跑来搞
  • 开关电源基本工作原理

    本文以丰富的开关电源案例分析 介绍单端正激式开关电源 自激式开关电源 推挽式开关电源 降压式开关电源 升压式开关电源和反转式开关电源 随着全球对能源问题的重视 电子产品的耗能问题将愈来愈突出 如何降低其待机功耗 提高供电效率成为一个急待解决
  • 21 【styled-components的使用】

    21 styled components的使用 1 为什么要用这个 我们都知道 我们从最开始学css的时候 为了避免写的样式影响到另外的地方 所以我们这样来写的 userConten userBtn button font size 18p
  • Anaconda安装pytorch虚拟环境

    Anaconda安装pytorch虚拟环境 Anaconda部分操作 查看安装了哪些包 查看当前存在哪些虚拟环境 检查更新当前conda Python创建虚拟环境 激活或者切换虚拟环境 虚拟环境中安装额外的包 删除虚拟环境 Pytorch虚
  • 计算机视觉算法岗面试题

    大佬的面试经验 https www nowcoder com discuss 128148 以及大佬的博客 https blog csdn net liuxiao214 article details 83043170 根据大佬的面试经验一
  • pipeline 获取 tag_Docker镜像获取(gcr.io等)- 2.0

    在 Docker镜像获取 gcr io等 中 介绍了几种获取 Docker 镜像的方式 对于大部分镜像来说都可以通过这些方式获得 但是对于较新的镜像 上面几种方式就很不方便了 所以今天介绍一种简单又安全的方式来获取被墙的镜像 通过 Dock
  • 单机数据库性能测试总结

    当前单机数据库 文件型数据库 有很多 为了选择更好的数据库 以便以后使用 在这主要对以下数据库进了插入 查询的速度进行测试 以及数据库的管理方式进行详细说明 数据库分别为 SQLLite FireBird Derby HSql Postgr
  • RabbitMQ入门------Java

    RabbitMQ RabbitMQ是一个开源的AMQP实现 服务器端用Erlang语言编写 支持多种客户端 如 Python Ruby NET Java JMS C PHP ActionScript XMPP STOMP等 支持AJAX 用
  • sql计算占比

    计算占比是日常分析中常见的需求 下面我们来小结一下怎么用sql来实现计算占比 1 数据准备 现在有一张表 表里有两个字段 op name与state 都为离散型可枚举数据 除此以外表里还有其他字段 数据形式如下 op name state
  • Neo4j Desktop数据导出,导入Neo4j Community (Docker环境)

    目前课题组有基于Kubernetes和Dockers的集群以及阿里云镜像托管仓库 我们以往建立的知识图谱都是在本机有数据备份 怎么将他们导出到集群环境的Neo4j中呢 本机数据导出 Neo4j Desktop提供很多功能 但是一键导出功能根
  • VMware虚拟机设置网络

    https jingyan baidu com article f0e83a257beae322e591013d html
  • JS中int和string的转换

    在javascript里怎么样才能把int型转换成string型 1 var x 100 a x toString 2 var x 100 a x JS会自动隐性转换 javascript 将string 变成 int JScript va
  • 列表查询和分组统计字段其他类型

    示例 列表查询 字段单选
  • 分支循环练习篇

    选择题第一部分练习 1 2 3 4 5 6 答案 cccddd 选择题第二部分练习 1 2 答案 bc 代码练习第一部分 1 2 3 4 5 使用试除法 ps 用到了新的库函数sqrt 开方 代码练习第二部分 1 2 老师写法 我的写法 3
  • PhpStorm同时编辑多行

    看到这张图基本就都明白了
  • HIT-ICS大作业

    计算机系统大作业 题目 程序人生 Hello s P2P 计算机科学与技术学院 摘 要 大作业题为程序人生 Hello s P2P 围绕一个较简单的hello c函数的整个生命周期展开 介绍了该示例程序从编写到执行到结束的全过程 详细地分析
  • 【Unity API】Input类

    Input类函数是游戏输入系统的接口 使用此类函数可以读取游戏输入设置中的虚轴 以及访问移动设备上的多点触摸或加速度计数据 关于 游戏输入设置 可以看到我的另一篇文章 https blog csdn net Ha1f Awake artic
  • javafx写一个小游戏-井字棋

    学了几天的javafx 感觉非常好用 自己写了一个小游戏 如有不足 希望大佬加以指正 谢谢 1 先写UI界面 新建一个ui fxml文件 用于显示ui界面 界面效果如下 代码如下