Java程序设计:五子棋(一)——编写界面

java实现五子棋 一、主要的界面 1、登录界面;2、游戏选择界面;3、画图游戏界面;4、五子棋下棋界面 它们间的逻辑关系为先通过登录界面登录跳转到游戏选择界面,再在游戏选择界面中可选择跳转到画图界面或五子棋下棋界面。 二、功能概况 1、登录界面:a、设置一定的布局和添加一些组件;b、通过点击登录按钮判断账号和密码是否正确,正确则成功登录,反之则弹出一个提示账号或密码输入错误的窗口;c、在窗口中添加一个按钮,在点击此按钮后关闭当前窗口,并在第三次输入错误后弹出提示并关闭登录界面 2、游戏选择界面:a、添加背景图片 阅读详情

1.界面的预处理与刷新

我们要绘制五子棋棋盘,首先必须明确一点:不管我们在棋盘上怎么操作,棋盘的网格线是不可能改变的。无论是下棋,悔棋,网格线都会在那。故而我们应该知道,要想网格线始终存在,我们需要在后台存在一个绘制代码,一直不断的画这些网格线,同样在这一个代码区将来我们下了棋子之后也要不断的在下棋的位置画上棋子。

那么这样的代码区在哪呢?我们知道我们绘制界面的大框架是JFrame,其他的组件不断的往JFrame里加,我们查看调用可以发现,这些组件包括JFrame都继承于同一个类Component,而在这个类中正好就有我们所要找的代码区,也就是函数paint(Graphics g)与repaint()。

paint()是提供给用户编程的,往往声明在接口之中,然后用户实现该接口,以拥有重绘的功能。若要定制某个图形组件的界面,可以重写paint()方法,记得一般习惯这样改写:

void paint(Graphics g){ 

super.paint(g); 

// your code

}

而repaint是刷新,里面不光有调用paint()函数刷新背景,也会刷新该组件上的所有组件。当对于界面或组件执行了某类操作,改变了界面上的图象时,jvm收到界面被调整的信息,此时会调用visible是ture的图形组件的repaint()方法对界面重绘。当然,直接重绘或全部重绘是很亏的,一个是用双缓存技术,另一个是只对桌面上显示的部分重绘。双缓存是指在缓存内先模拟重绘过程,只把最后成形的结果传给显示器显示。部分重绘就是指使用repaint(Dimensionarea)及类似的方法,只重绘与需调整的部分相关的界面。幸运的是,目前jdk提供的repaint()并不是傻呼呼的就直接重绘所有组件,已经用了上述两种方法优化过了。所以即使反复调用repaint()也不会有效率的损失。

repaint()是重要概念,它是在图形线程后追加一段重绘操作,是安全的!是系统真正调用的重绘!所以如果你需要某个部件刷新一下界面,记得调用repaint(),千万不要直接调用paint()!因为paint()只用于预处理中设定背景所用,不能被外界调用,而repaint是可以的。

概括起来,如果想给你的界面设定一个亘古不变的背景,重写paint()函数,但如果你后期要改变界面内容,改完后用repaint()刷新。

2.五子棋盘的绘制

一般为了方便绘图,或者界面美观,五子棋棋盘的横线数和纵线数是相同的,界面大小也采用近似正方形的宽高比。

首先新建一个项目,新建一个主类,并在主类里加上主函数。因为要重写界面的paint()代码,在paint()中加上绘制背景棋盘的代码,因此这个类要继承这个界面的框架——JFrame。

下面是简单的五子棋棋盘绘制代码,你可以回去自己写出五子棋棋盘代码,长宽以及几乘几的格子都由你自己决定。

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;


public class Test extends JFrame {

	public void initUI() {
		this.setTitle("五子棋v0.1");
		this.setSize(1000, 1000);
		this.setResizable(false);//大小不可变
		this.setLocationRelativeTo(null);//默认居中
		this.setDefaultCloseOperation(3);//按下叉号默认关闭
		this.getContentPane().setBackground(new Color(240, 233, 217));//修改背景颜色
		this.setVisible(true);
	}
	
	public void paint(Graphics g) {
		super.paint(g);
		drawChessTable(g);
	}

	public void drawChessTable(Graphics g) {
		for (int i = 0; i < 19; i++)
			g.drawLine(50, 50 + i * 50, 50
					+ (19 - 1) * 50, 50 + i
					* 50);
		for (int j = 0; j < 19; j++)
			g.drawLine(50 + j * 50, 50, 50 + j
					* 50, 50 + (19 - 1)
					* 50);
	}
	
	public static void main(String args[]){
		new Test().initUI();
	}

}

运行之后结果是这样的:

java制作五子棋和象棋之一五子棋图形界面的设计 参考一 java实践(八)——继承 阅读详情

相关推荐

JAVA实现网络对战带技能五子棋(一)——图形界面设计(上)

JAVA实现网络对战带技能五子棋(一)——图形界面设计(上) 序言 一直想用java做一个网络对战app,偶然的想法:给五子棋加各种角色(每个角色会有不同的技能)会怎么样?于是开始了下面的故事。JAVA实现的整个流程我将分为五个部分详述:图形界面设计、后台判断算法、事件监听器、多线程操作、Socket类网络通信。 Eclipse使用WindowBuilder设计图形界面 使用Eclipse是当时听mooc推荐的,可能还有一些新的编译软件,但是用什么软件无所谓,核心是编程的思路。 首先,需要下载JDK并配置环

Lwwwwwwwl的博客 2736

JS实现五子棋界面设计

JS实现五子棋需求分析以及代码实现画布样式布局1. canvas进行画布的设计2. 效果图棋盘设计1. 大小设计2. js代码编写(绘制)3. 效果图棋子设计1. 代码编写2. 效果图背景添加1. 代码编写2. 效果图 需求分析以及代码实现 画布样式布局 1. canvas进行画布的设计 新建CSS文件夹,新建style.css文件; 在style.css文件里进行canvas编写; canvas{ display: block; margin: 50px auto; box-shadow:

做自己喜欢的事情就好啦 3131

java简易五子棋源代码+图片素材(图形界面)

本人是学生,闲暇之余写的五子棋小程序(个人感觉不错),通俗易懂适合刚刚入门的同学学习。喜欢的可以下载一下,谢谢各位客官老爷。

html css制作五子棋,js实现带简单Ai的网页五子棋制作(UI篇)

前言:最近学了html,css,js,想找个项目来练习一下,就做了一个简单的网页五子棋,主要用到了canvas画图,逻辑部分都是js来写的,很简单,在这里简单的记录一下开发流程。创建棋盘:用canvas创建一个棋盘画板,棋盘的大小设置为450px 450px,并且用css设置canvas样式,设置好了之后就有一个棋盘了,让后利用js实现棋盘上面的画线操作。canvas注意事项::默认情况下 元素...

weixin_39759441的博客 2348

Augustus手动安装教程

本文记载了如何结合conda手动安装Augustus

m0_65437087的博客 1256

Qwen 三代进化全景对比:从 Qwen2.5 到 Qwen3 再到 Qwen3.5

本文对比了阿里巴巴通义千问三代大模型(Qwen2.5、Qwen3、Qwen3.5)的技术演进。18个月内,模型在架构、训练数据和能力上实现显著突破:从纯稠密结构(Qwen2.5)发展为混合注意力架构(Qwen3.5),支持语言从29种扩展至201种,并实现原生多模态融合。关键进展包括引入MoE架构、Gated DeltaNet混合注意力机制(计算效率提升10倍)、以及从独立模态到早期视觉语言联合训练的转变。模型阵容从7个通用尺寸发展为8+个混合架构,最大参数量达397B,上下文窗口扩展至256K(托管版1M

m0_47999117的博客 1万+

Java实践 ——五子棋

http://blog.youkuaiyun.com/cnlht/article/details/8176130 一、实践目标:        1.掌握JavaGUI界面设计        2.掌握鼠标响应事件(MouseMotionListener) 二、实践内容:       设计一个简单的五子棋程序,能够实现五子棋下棋过程。如下图所示 五子

gaoguoxin2的专栏 1075

SAP系统从ECC升级至S/4 HANA的实现路径及项目过程

从SAP ECC升级到 S/4 HANA,通常是一个复杂的转型过程,涉及到企业资源规划系统的全面现代化

saplakes的博客 2903

java版本五子棋桌面游戏之建立界面篇

这篇技术文章介绍了作者使用Java编写的五子棋游戏。文章详细介绍了如何实现五子棋游戏的基本功能,如棋盘的绘制、棋子的下落、胜负的判断等,并且使用了面向对象编程的思想来设计和实现游戏的各个组件。在实现中,作者使用了Java Swing库来实现游戏界面,并使用了Java中的多线程技术来实现游戏的并发执行。这篇文章对于Java初学者来说是一个非常好的实践项目,可以通过这个项目来学习Java语言的基本语法和面向对象编程的思想。

weixin_47166204的博客 1542

IEC104协议下的文件传输与软件升级的技术细节与操作流程

本文深入探讨IEC104协议下的文件传输过程和软件升级机制,揭示其背后的技术细节和操作流程。

2401_86189088的博客 2525

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

weixin_42412049的博客 740

【原创】C# wpf 绘制五子棋游戏界面及实现UI交互

本文分享如何使用wpf的原生xaml代码绘制五子棋游戏界面,及实现简单的UI交互。

hyq106的博客 1982

【ELK】最新版ELK日志搜集,过滤与展示,手把手教你搭建企业级ELK日志平台

ELFK是一套完整的日志集中处理方案。 E:ElasticSearck ES 分布式索引型非关系数据库 存储logstash输出的日志 全文检索引擎,保存的格式是json格式 L:logstash 基于java语言开发的,数据收集引擎。日志的收集,可以对数据进行过滤,分析,汇总,以标准格式输出 K:Kiabana 是es的可视化工具。对es存储的数据进行可视化展示,分析和检索。 F: FileBeat是一个轻量级日志采集器,Filebeat属于Beats家族的6个成员之一。

景天科技苑 7万+

java五子棋页面设计编程_Java程序设计:五子棋(一)——编写界面

1.界面的预处理与刷新我们要绘制五子棋棋盘,首先必须明确一点:不管我们在棋盘上怎么操作,棋盘的网格线是不可能改变的。无论是下棋,悔棋,网格线都会在那。故而我们应该知道,要想网格线始终存在,我们需要在后台存在一个绘制代码,一直不断的画这些网格线,同样在这一个代码区将来我们下了棋子之后也要不断的在下棋的位置画上棋子。那么这样的代码区在哪呢?我们知道我们绘制界面的大框架是JFrame,其他的组件不断的往...

weixin_29310631的博客 678

Office系列完全干净卸载工具合集(最全)

使用 Microsoft Fix it 卸载 Microsoft Office 套件 一、Windows 7、Windows Vista或Windows XP下卸载Office 1.MicrosoftEasyFix50416 工具用来卸载office 2003 MicrosoftEasyFix50416_Office2003.msi 2.MicrosoftEasyFix50154 工具用来卸载office 2007 MicrosoftEasyFix50154_Office2007.msi 3.Microso

业精于勤,荒于嬉 3万+

从零开始讲DDR(7)——modelsim独立仿真DDR4

本文主要内容为DDR4 MIG ip核仿真,modelsim独立仿真DDR4。在进行DDR仿真的时候,我们会面临一个以往常规仿真不存在的问题:DDR本身并不是一个我们通过RTL代码设计出来的部件,常规的模块或者IP仿真,都是基于RTL代码就能进行的,但是回顾一下我们DDR的开发流程,调用的IP核也只是MIG ip,其本质是一个DDRC+DDRPYH的组合,并不能模拟任何DDR本身的行为,因此,在进行仿真之前,我们首先要做的就是获取DDR的仿真模型。

apple_53311083的博客 3225

Java五子棋全代码

用Java编写简单的五子棋 前言    这两天在空闲时间做了个五子棋项目,分享给大家看一下,界面是这样的:        呜呜呜,界面很丑我知道,本人虽有几年PS基础,但知识浅薄,审美观不尽人意,做到如此实属极限(其实我懒得做了),大家将就着看看吧。        下面放出代码,为方便大家参考,我几乎每条代码都标有注释。     测试类代码 public class Test { public static void main(String[] args) { MyJFrame m

guyu的博客 4万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

用 Java 编写五子棋程序

GameUI:负责创建游戏的主界面,包括窗口、棋盘面板以及各种按钮。:处理游戏中的各种事件,如鼠标点击、按钮点击等。Shape:定义棋子的形状和绘制方法。MPanel:自定义面板类,用于绘制棋盘和棋子。通过以上四个类的协作,我们实现了一个简单的五子棋程序。GameUI类负责创建游戏界面,类处理各种事件,Shape类定义棋子的属性和绘制方法,MPanel类绘制棋盘和棋子。希望这篇博客能帮助你理解如何使用 Java 编写五子棋程序,让你在学习 Java 编程的过程中更加得心应手。

f36790741的博客 2084

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【Java之五子棋】——java五子棋游戏

基本思路: 1.先有一个界面可以弹出窗口,在界面上重写paint方法,在这个方法里加入棋盘,使得棋盘可以不断重绘,不会因为刷新而消失; 2.创建鼠标监听器,为了让鼠标监听器界面可以下黑白棋子; 3.再创建一个判断输赢的类,可以用数组来存储棋子 接下来完成具体步骤: 1.创建一个Gobang的类,继承了JFrame的功能,因此以前会写jf.setTitle("五子棋");这里就可以用this代替或者不写,下面这四个就是分别用了这两个方法 2.重写paint方法,绘制棋盘 可以先画两条直线

qq_50497708的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JAVA五子棋的实现(一)

前面在实现完一个JAVA的面板之后,就想着继续实现一个相较于面板更复杂一点的程序——五子棋。但是我在在搜索资料的时候,发现网上很多关于五子棋实现的博文都是一步到位,直接给个源代码,不是很适合新手学习。所以我这里打算记录一下自己实现五子棋的整个过程,大致会分为三四个阶段。今天我们先来实现第一个阶段的五子棋。同样的我们在着手写代码之前我们需要先做一些准备。 完整代码已上传到github上,地址:h...

Alexwym的博客 6万+

Java:五子棋设计(一)窗口与界面

Java:五子棋设计(一)窗口与界面 一个完整的五子棋项目包括很多部分:窗口与界面设计、各种功能实现、AI算法设计等等。本篇文章主要介绍基本的窗口和界面设计,以及监听器和画笔的使用。建议经常阅读Java API中文手册,里面用清晰的逻辑框架详尽地介绍了Java软件包里各种类与其包含的方法。 文章目录Java:五子棋设计(一)窗口与界面1.1窗口1.1.1创建窗口对象1.1.2添加组件1.1.3窗口可视化1.2监听器1.2.1接口继承监听器类1.2.2监听器的使用1.3画笔 1.1窗口 我们在启动一个游戏时,

lx930517的博客 2036

如何用java编写五子棋_java编写五子棋

寒假集训的开始是编写五子棋的程序。五子棋的编写开始时让我想到的是和AI有关,自然觉得应该蛮难的,不知道应该怎么去实现人机对战。但整个写下来,觉得弄清里面的门路后,就觉得简单起来。下面把编写时的想法和心得记录下来,以便记录下自己的成长。1.首先自然是从界面开始。基本的界面,使用边框布局,右边用JPanel来放置按钮及一些功能。左边则画出棋盘。然后实现重绘,以更加完善。重绘包括棋盘的重绘和棋子的重绘。...

weixin_28695537的博客 2045

关于五子棋程序的实现(一)——画出五子棋盘界面

五子棋界面与之前的画图板程序相比功能多了不少,在

weixin_42574142的博客 1万+

java五子棋全代码—可实现悔棋功能

用Java编写简单的五子棋——可悔棋! 前言   最近有网友仔细参考了我上一期的五子棋代码,发现了我偷懒没有做悔棋功能,并通过私信的方式找到了我,对我进行了狠狠地批评,说我不讲武德,来欺骗他们这些老同志。嗷,我一问,他们是有备而来,我大意了啊,没闪,就连夜补写了这篇文章。    测试类 public class Test { public static void main(String[] args) { MyJFrame mj = new MyJFrame();

guyu的博客 7657

Java之简单人机五子棋(一)

继上周实现了C++控制台版的五子棋之后,这周开始学习Java,顺便花了两三天时间,做出了一直想做的图形化界面的五子棋小游戏。同时在原来C++控制台程序的基础上对AI的算法进行了一定修正,修复了一些bug,并加入了悔棋的功能 C++五子棋系列传送门: C++之简单五子棋的设计思路 C++之简单五子棋的语言设计实现 C++简单五子棋的AI设计及实现 五子棋的算法规则和类的设计在C++相关...

black_kyatu的博客 8679

五子棋游戏程序设计制作(C语言)

五子棋游戏程序设计制作 大家都玩过手机的小游戏吧。我是编程爱好者,喜欢动脑筋研究一些算法,编程做出小游戏程序,很有趣很有成就感。在学习VB6编程时就编制过钻石棋和伤脑筋十二块那样的游戏,都是标准Windows图形界面的。现在有空闲时就玩手机上编译手机游戏。 值此壬寅金虎新春之时,花了3天时间编制了这款五子棋游戏。因时间仓促只写了双人对奕的版本,以后有时间再编写人机对战的AI版本。游戏程序是用简单的C语言编制的,是安卓手机版图形界面的,全是用编译器绘图方法绘制的。算法很简单,棋盘是15乘以15点.

baidu_41801770的博客 5814
上一篇: Java程序设计:计算器(二)
下一篇: Java程序设计:五子棋(二)——添加棋子
thdgth
博客等级 码龄10年 123粉丝 18原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值