VB五子棋代码

VB五子棋代码
VB五子棋代码

代码如下:

Option Explicit

Const SubWidth = 400 '定义画五子棋表格的每格长度和宽度

Private P2PlayColor As Integer '实现黑白棋子的交替进行

Private MyColor As Integer '标记黑白双方棋子颜色

Private IfSucceed As Boolean '表示是否胜利

Const pi = 3.14159 '定义字符常量pi=3.14159

Private centerx As Single

Private centery As Single

Private radius As Single

Private DataArray(14, 14) As Integer '保存棋盘中棋子的位置信息(空子=3 黑棋=1 白棋=0)

Private sumtime As Integer '记录总时间来判断谁超时

Private ifStarteasy As Boolean '标记简单难度下计时功能是否可以开启(ifStarteasy=true时每落子一次计时开启一次)

Private ifStartnormal As Boolean '标记中等难度下计时功能是否可以开启(ifStartnormal=true时每落子一次计时开启一次)

Private ifStarthard As Boolean '标记困难难度下计时功能是否可以开启

(ifStarthard=true时每落子一次计时开启一次)

'单击命令按钮"退出"退出

Private Sub CmdExit_Click()

End

End Sub

Private Sub CmdStart_Click()

Dim i As Integer

Dim m As Integer

Dim n As Integer

'绘制棋盘

PicQiPan.Cls

PicQiPan.ForeColor = vbBlack

For i = 1 To 14

PicQiPan.Line (SubWidth, SubWidth * i)-(SubWidth * 14, _ SubWidth * i)

PicQiPan.Line (SubWidth * i, SubWidth)-(SubWidth * i, _ SubWidth * 14)

Next i

'棋盘落点信息初始化

For m = 0 To 14

For n = 0 To 14

DataArray(m, n) = 3

Next n

Next m

'主要标记信息初始化

P2PlayColor = 0

MyColor = 0

IfSucceed = False

ifStarteasy = False

ifStartnormal = False

ifStarthard = False

Timer2.Enabled = False

Timer3.Enabled = False

Timer4.Enabled = False

FrmMain.Cls

sumtime = -1

End Sub

'简单难度

Private Sub fileeasy_Click()

ifStarteasy = True

sumtime = -1

MsgBox "双方下每步棋的思考时间最多20秒,否则超时清盘"

End Sub

'通过文件"退出"退出

Private Sub fileexit_Click()

End

End Sub

'困难难度

Private Sub filehard_Click()

ifStarthard = True

sumtime = -1

MsgBox "双方下每步棋的思考时间最多5秒,否则超时清盘"

End Sub

'中等难度

Private Sub filenormal_Click()

ifStartnormal = True

sumtime = -1

FrmMain.Cls

MsgBox "双方下每步棋的思考时间最多10秒,否则超时清盘"

End Sub

'通过文件"重新开始"实现棋盘初始化

Private Sub filerestart_Click()

Call CmdStart_Click

End Sub

Private Sub Form_Load()

Dim i As Integer

Dim m As Integer

Dim n As Integer

'绘制棋盘

PicQiPan.Cls

PicQiPan.ForeColor = vbBlack

For i = 1 To 14

PicQiPan.Line (SubWidth, SubWidth * i)-(SubWidth * 14, _

SubWidth * i)

PicQiPan.Line (SubWidth * i, SubWidth)-(SubWidth * i, _

SubWidth * 14)

Next i

'棋盘落点信息初始化

For m = 0 To 14

For n = 0 To 14

DataArray(m, n) = 3

Next n

Next m

Print

'确定表针位置的基本参量

centerx = Pictime.Width / 2

centery = Pictime.Height / 2

radius = Pictime.Height / 2 * 0.9

Pictime.PSet (centerx, centery)

Pictime.Circle (centerx, centery), radius

End Sub

'棋子落点判断(出界和重子情况)

Private Sub PicQipan_MouseDown(Button As Integer, Shift As Integer, X As Single, y As Single)

Dim x0 As Integer

Dim y0 As Integer

Dim i As Integer

Dim j As Integer

If X < SubWidth Or X > 14.5 * SubWidth Or y < SubWidth Or y > 14.5 * SubWidth Then MsgBox "超出棋盘界限,请重新下!"

Exit Sub

End If

If Abs(Int(X / SubWidth) - X / SubWidth) < 0.5 Then

x0 = Int(X / SubWidth)

Else

x0 = Int(X / SubWidth) + 1

End If

If Abs(Int(y / SubWidth) - y / SubWidth) < 0.5 Then

y0 = Int(y / SubWidth)

Else

y0 = Int(y / SubWidth) + 1

End If

If DataArray(x0, y0) <> 3 Then

'当前位置已经有棋子了,

MsgBox "当前位置已经有棋子了,请重新走!", vbCritical, "NOTE!"

Exit Sub

End If

sumtime = -1

Call DrawPill(x0, y0) '画棋子

Call RemenberCrossData(x0, y0) '记录棋子信息

Call WhoWin '判断谁赢

'判断是否开启相应难度计时功能

If ifStarteasy = True Then

Timer2.Enabled = True

End If

If ifStartnormal = True Then

Timer3.Enabled = True

End If

If ifStarthard = True Then

Timer4.Enabled = True

End If

End Sub

'画棋子

Private Sub DrawPill(xx0 As Integer, yy0 As Integer)

If P2PlayColor Then

PicQiPan.ForeColor = vbWhite

DoEvents

PicQiPan.FillColor = vbWhite

PicQiPan.FillStyle = 0

MyColor = 0

Else

PicQiPan.ForeColor = vbBlack

DoEvents

PicQiPan.FillColor = vbBlack

PicQiPan.FillStyle = 0

MyColor = 1

End If

P2PlayColor = Not P2PlayColor

PicQiPan.Circle (xx0 * SubWidth, yy0 * SubWidth), SubWidth * 0.5 End Sub

'以下A B C 三个事件共同实现下棋的同时听音乐功能

'A

Private Sub Dir1_Change()

File1.Path = Dir1.Path

End Sub

'B

Private Sub Drv_Change()

Dir1.Path = Drv.Drive

End Sub

'C

Private Sub File1_Click()

mp3.URL = File1.Path & "\" & File1.FileName End Sub

'棋盘皮肤

Private Sub qipanstylefurA_Click()

PicQiPan.BackColor = &HC0FFFF

Call CmdStart_Click

End Sub

Private Sub qipanstylefurB_Click()

PicQiPan.BackColor = &HC0C000

Call CmdStart_Click

End Sub

Private Sub qipanstylefurC_Click()

PicQiPan.BackColor = &HE0E0E0

Call CmdStart_Click

End Sub

Private Sub qipanstylefurD_Click()

PicQiPan.BackColor = &H8080FF

Call CmdStart_Click

End Sub

'添加四种背景音乐

Private Sub stylemusicA_Click()

mp3.URL = App.Path & "\" & "music01.mp3"

End Sub

Private Sub stylemusicB_Click()

mp3.URL = App.Path & "\" & "music02.mp3"

End Sub

Private Sub stylemusicC_Click()

mp3.URL = App.Path & "\" & "music03.mp3"

End Sub

Private Sub stylemusicD_Click()

mp3.URL = App.Path & "\" & "music04.mp3"

End Sub

'表针走动Timer1.Enabled=true在属性框中设定Private Sub Timer1_Timer()

Dim s As Integer

Dim m As Integer

Dim h As Integer

Dim sngLenS As Single

Dim sngLenM As Single

Dim sngLenH As Single

Dim i As Integer

'调试几次并查询VB常用函数,最后确定应该使用Now 而不是Time(不过之前使用Time确实可以)

s = Second(Now)

m = Minute(Now)

h = Hour(Now) + m / 60

sngLenS = radius * 0.8

sngLenM = radius * 0.6

sngLenH = radius * 0.4

Pictime.Cls

Pictime.Scale (-centerx, centery)-(centerx, -centery)

Pictime.Line (0, 0)-(sngLenS * Sin(2 * pi * s / 60), sngLenS * Cos(2 * pi * s / 60)), vbGreen Pictime.Line (0, 0)-(sngLenM * Sin(2 * pi * m / 60), sngLenM * Cos(2 * pi * m / 60)), vbGreen

If h > 12 Then

h = h - 12

End If

Pictime.Line (0, 0)-(sngLenH * Sin(2 * pi * h / 12), sngLenH * Cos(2 * pi * h / 12)), vbGreen Pictime.Circle (0, 0), radius * 0.9

For i = 1 To 12

Pictime.Circle (radius * 0.9 * 0.85 * Sin(2 * pi * i / 12), radius * 0.9 * 0.85 * Cos(2 * pi * i / 12)), radius * 0.01, vbGreen

Next i

End Sub

'判断谁赢了

Private Sub WhoWin()

Dim i As Integer

Dim j As Integer

For j = 1 To 14

For i = 1 To 14

If DataArray(i, j) = MyColor And Not IfSucceed Then

If (14 - i) >= 4 And (14 - j) >= 4 Then

If DataArray(i + 1, j + 1) = MyColor Then

If DataArray(i + 2, j + 2) = MyColor Then

If DataArray(i + 3, j + 3) = MyColor Then

If DataArray(i + 4, j + 4) = MyColor Then

IfSucceed = True

Exit For

Exit For

End If

End If

End If

End If

End If

If i > 4 And (14 - j) >= 4 Then

If DataArray(i - 1, j + 1) = MyColor Then

If DataArray(i - 2, j + 2) = MyColor Then

If DataArray(i - 3, j + 3) = MyColor Then

If DataArray(i - 4, j + 4) = MyColor Then

IfSucceed = True

Exit For

Exit For

End If

End If

End If

End If

End If

If (14 - i) >= 4 Then

If DataArray(i + 1, j) = MyColor Then

If DataArray(i + 2, j) = MyColor Then

If DataArray(i + 3, j) = MyColor Then

If DataArray(i + 4, j) = MyColor Then

IfSucceed = True

Exit For

Exit For

End If

End If

End If

End If

End If

If (14 - j) >= 4 Then

If DataArray(i, j + 1) = MyColor Then

If DataArray(i, j + 2) = MyColor Then

If DataArray(i, j + 3) = MyColor Then

If DataArray(i, j + 4) = MyColor Then

IfSucceed = True

Exit For

Exit For

End If

End If

End If

End If

End If

End If

Next i

Next j

If IfSucceed Then

If Not P2PlayColor Then

Timer2.Enabled = False '白方赢计时停止

Timer3.Enabled = False

Timer4.Enabled = False

MsgBox "白方胜!", vbOKOnly

CmdStart_Click

Else

Timer2.Enabled = False '黑方赢计时停止

Timer3.Enabled = False

Timer4.Enabled = False

MsgBox "黑方胜!", vbOKOnly

CmdStart_Click

End If

End If

End Sub

'分别记录黑白棋子的分布

Private Sub RemenberCrossData(x0_ As Integer, y0_ As Integer)

If MyColor Then

DataArray(x0_, y0_) = 1

Else

DataArray(x0_, y0_) = 0

End If

End Sub

'简单难度思考时间20秒

Private Sub Timer2_Timer()

Dim i As Integer

i = 1

sumtime = sumtime + i '计时

FrmMain.Cls

Print 20 - sumtime '剩余时间提示

If sumtime = 20 Then

If MyColor = 1 Then

Timer2.Enabled = False '白方超时计时停止

MsgBox "白棋超时"

Call CmdStart_Click

Else

Timer2.Enabled = False '黑方超时计时停止

MsgBox "黑棋超时"

Call CmdStart_Click

End If

End If

End Sub

'中等难度思考时间10秒

Private Sub Timer3_Timer()

Dim i As Integer

i = 1

sumtime = sumtime + i '计时

FrmMain.Cls

Print 10 - sumtime '剩余时间提示

If sumtime = 10 Then

If MyColor = 1 Then

Timer3.Enabled = False '白方超时计时停止

MsgBox "白棋超时"

Call CmdStart_Click

Else

Timer3.Enabled = False '黑方超时计时停止

MsgBox "黑棋超时"

Call CmdStart_Click

End If

End If

End Sub

'困难难度思考时间5秒

Private Sub Timer4_Timer()

Dim i As Integer

i = 1

sumtime = sumtime + i '计时

FrmMain.Cls

Print 5 - sumtime '剩余时间提示

If sumtime = 5 Then

If MyColor = 1 Then

Timer4.Enabled = False '白方超时计时停止

MsgBox "白棋超时"

Call CmdStart_Click

Else

Timer4.Enabled = False '黑方超时计时停止

MsgBox "黑棋超时"

Call CmdStart_Click

End If

End If

End Sub

//Java编程:五子棋游戏源代码 import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; import java.io.PrintStream; import javax.swing.JComponent; import javax.swing.JPanel; /* *main方法创建了ChessFrame类的一个实例对象(cf), *并启动屏幕显示显示该实例对象。 **/ public class FiveChessAppletDemo { public static void main(String args[]){ ChessFrame cf = new ChessFrame(); cf.show(); } } /* *类ChessFrame主要功能是创建五子棋游戏主窗体和菜单**/ class ChessFrame extends JFrame implements ActionListener { private String[] strsize={"20x15","30x20","40x30"}; private String[] strmode={"人机对弈","人人对弈"}; public static boolean iscomputer=true,checkcomputer=true; private int width,height; private ChessModel cm; private MainPanel mp; //构造五子棋游戏的主窗体 public ChessFrame() { this.setTitle("五子棋游戏"); cm=new ChessModel(1); mp=new MainPanel(cm); Container con=this.getContentPane(); con.add(mp,"Center"); this.setResizable(false); this.addWindowListener(new ChessWindowEvent()); MapSize(20,15); JMenuBar mbar = new JMenuBar(); this.setJMenuBar(mbar); JMenu gameMenu = new JMenu("游戏");

分类号: U D C:D10621-408-(2007)5738-0 密级:公开编号:21 成都信息工程学院 学位论文 基于Java的五子棋游戏的设计 论文作者姓名:赵小龙 申请学位类别:计算机科学与技术 申请学位类别:工学学士 指导教师姓名(职称):吴春旺 论文提交日期:2007年06月10日

基于Java的五子棋游戏的设计 摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 关键词:深度搜索;估值;电脑AI;五子棋;算法

Gobang Java-based games design Abstract As a sport, gobang is very popular in civil, in order to become familiar with gobang rules and techniques, and the study of simple artificial intelligence, I decide to use the Java to develope gobang games and complete the two functions including man-machine war and man-man war. Network Connection is Socket Programming for some applications, client and server interaction is definited by Class Message, which is a very good scalability, Client interface is responsible for the collection and maintenance of user input information, and error handling. Server users maintain online basic information and arbitrary two-time users of the chessboard of information, dynamic maintenance user list. During the man-machine players, it improves intelligence of the computer players through depth search and valuation module. Analyzes Module valuation of the precise elements, as well as a number of increased precision, and compares their search for nodes, which raises some computer AI programs on the basis of analysis, such as recursive algorithm, computer learning. Algorithm of procedures contribute to the understanding of the structure, logical thinking ability, In other areas of artificial intelligence has great references. . Key words:Search depth; Valuation; Computer AI; Gobang ; Algorithm

五子棋游戏代码(Java语言) import java.awt.*; import java.awt.event.*; import javax.swing.*; class mypanel extends Panel implements MouseListener { int chess[][] = new int[11][11]; boolean Is_Black_True; mypanel() { Is_Black_True=true; for(int i=0;i<11;i++) { for(int j=0;j<11;j++) { chess[i][j] = 0; } } addMouseListener(this); setBackground(Color.RED); setBounds(0, 0, 360, 360); setVisible(true); } public void mousePressed(MouseEvent e) { int x = e.getX(); int y = e.getY(); if(x < 25 || x > 330 + 25 ||y < 25 || y > 330+25) {return;} if(chess[x/30-1][y/30-1] != 0) {return;} if(Is_Black_True==true) { chess[x/30-1][y/30-1] = 1; Is_Black_True=false; repaint(); Justisewiner(); return; }

if(Is_Black_True==false) { chess[x/30-1][y/30-1]=2; Is_Black_True=true; repaint(); Justisewiner(); return; } } void Drawline(Graphics g) { for(int i=30;i<=330;i+=30) { for(int j = 30;j <= 330; j+= 30) { g.setColor(Color.GREEN); g.drawLine(i, j, i, 330); } } for(int j = 30;j <= 330;j+=30) { g.setColor(Color.GREEN); g.drawLine(30, j, 330, j); } } void Drawchess(Graphics g) { for(int i=0;i < 11;i++) { for(int j = 0;j < 11;j++) { if(chess[i][j] == 1) { g.setColor(Color.BLACK); g.fillOval((i+1)*30-8, (j+1)*30-8, 16, 16); } if(chess[i][j]==2) { g.setColor(Color.WHITE); g.fillOval((i+1)*30-8, (j + 1) * 30-8, 16, 16); }

手机五子棋游戏的设计与实 现 专业: 姓名: 班级: 学号: 指导教师:

J2ME(Java 2 Micro Edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项开发技术。它因其“write once,run anywhere”的Java特性而提高了开发的效率。随着手机性能的不断提高,手机休闲娱乐应用将成为PC休闲娱乐应用之后又一重要业务增长点。棋类游戏规则单一,比较适合在手机等便携终端推广。 由于具有跨平台、易于移植、占用空间小的优势,J2ME成为移动应用开发平台的主流,并提供了很多用以支持移动应用软件的开发的API。现将该技术用于这次的手机游戏开发,可以实现游戏的快速开发,不但便于查看游戏运行过程中内存的占用量和程序的每一部分代码消耗了多少处理器时间,而且可以不断地优化代码,使代码具有高度的复用性、可扩展性、可维护性。 游戏的开发以J2ME为平台,利用Java技术,结合J2ME的MIDP技术,并对于程序设计思想,重要类、方法等展开讨论。在对弈部分,分析设计走棋算法,选择合适的方式组织成代码,实现基本的人工智能。过程中使用了J2ME中的CLDC/MIDP软件体系,主要运用了MID Profile的特定类的支持,来完成游戏的开发。 关键词:J2ME;CLDC;MIDP

J2ME is a kind of fast developing technology implemented on various devices especially mobile communication equipments. It improves the efficiency of the development process because of its "write once, run anywhere" nature. The development trend of the entertainment market based on the cell phone is very obvious because the handset performance enhances unceasingly. The entertainment market based on the cell phone will to be the new important business growth point follow the PC entertainment market. As the rules of a single chess game, it is more suitable for mobile phones and other portable terminal extension. J2ME has been the preferred platform for development because of its platform independent and compatibility, and provides a lot of APIs to support the development of mobile application software. The technology for mobile game development, can achieve the rapid development of the game. It is not only easy to observe the memory consumption and processor consumed time during the operation of the game, but also can optimize the code, so that the code has a high degree of reusability, scalability, maintainability. The game has designed by J2ME, the Java technology and the MIDP technology. I studied the procedure thought, the important class and the method. In the playing chess part, I have analyzed the algorithm, choosed the appropriate way to organize the code and realized the basic artificial intelligence. On the other hand,I learned software system of CLDC/MIDP and the specific class of the MID Profile to complete the game development. Key words: J2ME;CLDC;MIDP

《面向对象程序设计》 课程设计报告 实验时间:2010年10月26日 实验班级:********************** 实验报告总份(片)数: 1 份(片) 实验指导老师:***** ******* 设计小组 湖南省吉首市吉首大学 课程设计报告 简单的游戏——五子棋 小组成员(姓名、学号): **(组长)** ** ** ** ** 一、实验分工

二、开发环境(实验编译以及测试环境) 硬件环境: CPU:Intel 奔腾双核E5200 主频2.5GHz 内存:2G 软件环境: 操作系统:Windows 7 编程环境JDK7.0 开发工具:Eclipse SDK 三、使用环境(用户运行环境) 硬件环境: CPU主频在500MHZ以上,内存在128M以上 软件环境: JAVA运行环境+ Windows XP或Windows 2000 以上操作系统 目录 第一章总体设计.............................................................................................................................. 1 1.1设计的目的.......................................................................................................................... 1 1.2本系统的主要功能.............................................................................................................. 1 1.3系统包含的类及类之间的关系。...................................................................................... 1 1.4 Java源文件及其功能......................................................................................................... 2 1.5 项目构建思路..................................................................................................................... 2第二章模块功能介绍.................................................................................................................. 12 2.1主类Chess...................................................................................................................... 12

南京晓庄学院 《JAVA程序设计》 课程设计报告 题目: 五子棋游戏的设计与实现 姓名: 陶野 学号: 班级: 12软件工程转本2班 指导教师: 王峥 完成时间7月1日 成绩: 信息工程学院 2015年6月

目录

五子棋游戏的设计与实现 1引言 五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子。因而规则简单的五子棋也可能出自当时,并是用石子作棋子。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。 1.1系统开发背景 在计算机逐步渗入社会生活各个层面的今天,计算机已经成为了人们日常生活中的一部分, 越来越多的人使用计算机办公、娱乐等等。在这其中,系统自带的小游戏也占据了相当重要的 地位,与那些网络游戏和3D游戏相比,它有编写简单容易上手等特点,非常适合人们在完成工 作的时候适当的娱乐要求。这些小游戏大都是以益智和娱乐为目的,不仅给紧张工作的人们以 放松,还可以让人们的大脑得到开发。 1.2完成的主要工作 设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择黑子先下 2.设置双方下棋总共时长 3.刷新重新开始 4.悔棋 5.认输 6.退出提示 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负);

下面的源代码分为4个文件; (1)chessClient.java:客户端主程序。 (2)chessInterface.java:客户端的界面。 (3)chessPad.java:棋盘的绘制。 (4)chessServer.java:服务器端。 可同时容纳50个人同时在线下棋,聊天。 /********************************************************************************************* 1.chessClient.java **********************************************************************************************/ import java.awt.*; import java.awt.event.*; import java.io.*; import https://www.360docs.net/doc/ef18041473.html,.*; import java.util.*; class clientThread extends Thread { chessClient chessclient; clientThread(chessClient chessclient) { this.chessclient=chessclient; } public void acceptMessage(String recMessage) { if(recMessage.startsWith("/userlist ")) { StringTokenizer userToken=new StringTokenizer(recMessage," "); int userNumber=0; https://www.360docs.net/doc/ef18041473.html,erList.removeAll(); https://www.360docs.net/doc/ef18041473.html,erChoice.removeAll(); https://www.360docs.net/doc/ef18041473.html,erChoice.addItem("所有人"); while(userToken.hasMoreT okens()) { String user=(String)userToken.nextToken(" "); if(userNumber>0 && !user.startsWith("[inchess]")) { https://www.360docs.net/doc/ef18041473.html,erList.add(user);

本人学会的一个五子棋网络版和单机版游戏,有老师指导完成,详细的解释和代码都在下面,希望可以帮助到大家! 1.客户端连接 新建个gobangClient类 package gobang; public class gobangClient { public static void main(String[] args) throws Exception { new ChessBoard("localhost",8866); } } 2.服务端连接 新建个gobangServer类 package gobang; public class gobangServer { public static void main(String[] args) throws Exception { new ChessBoard(8866); } } 3.源代码,有详细解释 package gobang; import java.awt.BorderLayout;

import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import https://www.360docs.net/doc/ef18041473.html,.ServerSocket; import https://www.360docs.net/doc/ef18041473.html,.Socket; import java.util.ArrayList; import java.awt.Graphics; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; public class ChessBoard extends JFrame { private boolean myPlay=false;//(默认是false)是否轮到我落子 private JButton button1 = new JButton("开始"); private JButton button2 = new JButton("悔棋"); private JPanel p1 = new JPanel(); private PicPane pp = null; private int side=1;//1表示黑 private int n=0;//记录点击开始的次数 public static final int SIZE=15; public static int[][]board=new int[SIZE][SIZE];//用来保存棋盘上棋子状态 //1为黑,2为白,0为无 public static final int BLACK=1; public static final int WHITE=-1; private NetService service; private static ArrayList list = new ArrayList(); //保存了下棋的步骤 private boolean end=true;//true表示游戏已经结束

总结 一、目的: 1、完成疯狂java讲义第四章作业 2、提升代码能力 3、熟悉java语言 二、环境: Windows8.1系统、jdk1.8、记事本(需要把文件扩展名改成java) 三、遇到的问题: 1、错误需要为class、interface或enum的问题 这个问题,经调试发现是因为注释的时候使用了嵌套注释,即在跨行注释/* */里面 添加了跨行注释 2、如何提取控制台输入的问题 这个问题,根据书上例子,采用bufferedreader解决,具体可以参见api文档. 3、斜方向棋子的检测问题 这个问题,解决它所需要的算法,着实让我头疼了一下.因为我是以棋盘左边第一列为 基准进行斜上方和斜下方的检测,以及以棋盘最后一列为基准进行斜上方和斜下方 的检测.第一列的检测会好做很多,因为只需要两层嵌套for循环的i和j相加或相减 就可以实现斜方向的递进.而以最后一列的,则需要让两层嵌套for循环i和j的初始 值设定为棋盘大小,然后递减.这就导致无法直接用i和j相加或相减来实现递进.我的 解决办法是引入额外的变量reduce(具体详见源码),从0开始递增,这样就可以用i和 reduce的相加或相减来实现递进. 四、所做的内容: 和大多数五子棋游戏代码一样,我也是采用一个二维数组board来作为棋盘.同时采用一个全局变量boardsize来指定这个二维数组的大小,类似于这样:board[boardsize][boardsize].然后使用水平、竖直、斜方向来检测游戏是否出现结果。 有棋盘初始化函数,对二维数组board[][]进行赋值. 有棋盘打印函数实现棋盘的显示. 一个棋子输入函数. 一个胜负检测函数. 一个信息输出函数. 然后在main函数里面采用while循环实现游戏的流程. 列举几个很有用的变量: Board[][];//字符串型,作为棋盘的二维数组,是全局变量 Boardsize;//int型,控制棋盘大小,是全局变量 E_o_t;//布尔变量,用来判断main函数中的while循环是否结束.即实现游戏是否结束功能. W_steps,B_steps;//int型,用来记录白棋,黑棋连在一起的棋子的个数,它们中的任何一个值达到5,则代表相应的棋手赢了. Reduce;//int型,在胜负检测函数中斜方向的检测用到,前面用介绍. 控制台用到的命令: Javac;//用来编译记事本写的程序. Java;//用来执行编译过的程序 五、总结: 这次的作业,感觉对自己的代码能力有一定的提升,同时,对java编程有了更深的认识,

目录 第一章软件开发平台…………………………… 游戏设计思路…………………………第二章小游戏五子棋的开发过程……………… 第一节JA V A基础知识……………………… 第二节启动程序的分析…………………… 第三节游戏设计过程………………………第三章总结…………………………………………第四章参考文献……………………………………第五章附录…………………………………………

游戏设计思路:

第一节java程序基础知识 本系统有4个程序每个程序都导入了不同的包和类运用了不同的所学知识。不同的类和包提供的方法、类型等都不同,本程序还使用了继承。以至使其能够完成不同的功能。本节主要讲述本系统所使用的基础知识。 1、类的基础 <1、类的定义 JA V A中的类实质上是一种对象类型,它是对具有相同属性和相同行为对象的一种抽象。类是java程序中最小的组成单位。 <2、Java中类定义的格式为: [类修饰符] class 类名[extends 基类] [implements 接口] {// 成员变量声明(Member variable declaration) // 成员方法声明(Member method declaration)} 其中,class、extends和implements都是Java的关键字。类修饰符、extends和implements 是关于修饰符、继承和接口的内容。 2、继承 继承性是面向对象程序设计语言的一个重要特征,通过继承可以实现代码的复用。Java语言中,所有的类都是直接或间接的继承https://www.360docs.net/doc/ef18041473.html,ng.object类而得到的。被继承的类称为基类或父类,继承而的来的类成为子类。子类继承基类的方法和属性,同时也可以修改基类的方法和属性,并增加自己新的属性和方法。Java不支持多重继承。即一个子类不能拥有两个或以上的父类。 3、包 <1、包的定义 在Java中,把相关的代码组织到一起,称为“包”。包市一种将相关类、接口或其他包组织起来的集合体,目的是为了将包含类代码的文件组织起来,易于查找和使用。 <2、包的语法及导入: Package PackageName; //包的定义 Import java.awt.Color //导入包关键字Import 4、接口 <1、接口的定义 Java中的接口可以看成是一种抽象类,它是一些抽象方法和常量的集合,其主要作用是使得处于不同层次上以至于互不相干的类能够执行相同的操作,引用相同的值,而且在一个类中可以同时实现来自不同接口中的多种方法。 <2、接口的定义和实现 Interface 接口名{//抽象方法} //定义接口 Class 类名implements 接口名称{// 类体} 实现接口 5、线程 <1、线程的定义

package day17.gobang; import java.util.Arrays; public class GoBangGame { public static final char BLANK='*'; public static final char BLACK='@'; public static final char WHITE='O'; public static final int MAX = 16; private static final int COUNT = 5; //棋盘 private char[][] board; public GoBangGame() { } //开始游戏 public void start() { board = new char[MAX][MAX]; //把二维数组都填充‘*’ for(char[] ary: board){ Arrays.fill(ary, BLANK); } } public char[][] getChessBoard(){ return board; } public void addBlack(int x, int y) throws ChessExistException{

//@ //char blank = '*'; //System.out.println( x +"," + y + ":" + board[y][x] + "," + BLANK); if(board[y][x] == BLANK){// x, y 位置上必须是空的才可以添棋子board[y][x] = BLACK; return; } throw new ChessExistException("已经有棋子了!"); } public void addWhite(int x, int y) throws ChessExistException{ if(board[y][x] == BLANK){// x, y 位置上必须是空的才可以添棋子board[y][x] = WHITE; return; } throw new ChessExistException("已经有棋子了!"); } //chess 棋子:'@'/'O' public boolean winOnY(char chess, int x, int y){ //先找到y方向第一个不是blank的棋子 int top = y; while(true){ if(y==0 || board[y-1][x]!=chess){ //如果y已经是棋盘的边缘,或者的前一个不是chess //就不再继续查找了 break; } y--; top = y;

五子棋游戏 1.课程设计的目的 计算机技术的不断发展给人们的日常工作和生活都带来了许多益处,从Windows 系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家开始,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了花样繁多的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。Java语言作为一种面向对象的编程语言,具有分布式,可移植,高性能等特点。通过系统的学习,就可以使用它开发出功能齐全,满足特殊需求的应用程序。它对学习者掌握技能,开拓思维都有很大的帮助。 Java语言的开发方法是当今世界最流行的开发方法,是当今流行的网络编程语言。它具有面向对象、跨平台、分布应用等特点。它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。很多程序开发人员得第一选择。为了将课堂上得知识掌握得更加透彻,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。让学生自己动手动脑,将书本上得知识运用到实践当中去,使知识能更好得融会贯通。 通过自己动手,自主得学习,对Java这门课程有更深得了解与认识,并通过自己动手,自主得学习,对Java这门课程有更深得了解与认识,通过本次课设,实现本学期内容的回顾与综合运用,包括类的建立,用类创建对象,方法的调用,图形组建的使用方法,图形界面的布局形式,事件处理机制,文件对话框的使用,文件操作的基本方法,数据读写的基本用法等。 学习任何知识得目的都是要将它运用到实践中去,所以我们要运用已有的知识,独立得将这个课程设计完成,只有这样,我们才能将知识变成本领,变成属于自己得东西,通过一个学习得学习,我们已经有可一定得Java基础,现在我们就要利用这些基础,来完成课程设计。 沈阳大学

《JAVA程序设计》 实训报告 实训题目: 五子棋游戏制作 专业:计算机网络 班级: 14网络(1)班 姓名: 指导教师: 2015 年 12 月 31日 目录 1.实训目的........................... 错误!未定义书签。 2.实训题目描述和要求................. 错误!未定义书签。 实训题目描述...................... 错误!未定义书签。

实训题目要求...................... 错误!未定义书签。 3.实训报告内容....................... 错误!未定义书签。 需求分析.......................... 错误!未定义书签。 概要设计.......................... 错误!未定义书签。 详细设计.......................... 错误!未定义书签。 编码.............................. 错误!未定义书签。 测试.............................. 错误!未定义书签。 4.总结............................... 错误!未定义书签。 实训指导教师评语................... 错误!未定义书签。

1.实训目的 随着经济社会的迅速发展,人们生活水平有了很大的提高, 人们的生活观念也发生了巨大的改变。高品质的生活、现代化 得生活方式成为人们共同追求的目标;休闲、娱乐性活动作为 时尚生活中的一部分,而被大多数的人所追捧。棋类项目作为 一种智力型项目,可以益智健心、修身养性,也可以满足人们 对于娱乐和休闲的新需求。一些项目比如五子棋等等,由于项 目本身互动的特点,一直被人们所喜爱,因此得以生存和发 展,成为许多人喜爱的休闲娱乐性棋类项目。而今,以网络技 术为核心和计算机技术的现代网络技术已经在现实生活得到了 十分的广泛的使用。休闲类网络游戏集合了益智性、趣味性、 互动性、娱乐性于一体,已经成为多数人群的选择的休闲方 式。 《Java程序设计》课程实训,学生可以将理论知识与具体 实践相结合,巩固对JAVA相关方法和概念的理解,通过实训单 机版五子棋游戏的编程,加深对所学知识的理解和应用。如: 通过实训能够结合实例进一步理解面向对象程序设计的基本概 念,掌握程序设计的基本方法和技巧,灵活的使用包,进一步 的理解接口,熟练的掌握在接口中对事件的实现。深入理解和 灵活运用面向对象程序设计的基本特性,培养良好的程序设计 风格,提高抽象思维、逻辑思维的能力。

j a v a五子棋毕业设计整 套 SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

1引言 随着计算机技术的不断发展,网络技术的普及范围越来越广,网络能够提供的服务多样、便捷,已经成为人们生产生活中不可缺少的重要组成部分。如今网络休闲游戏发展迅速,它凭借健康、方便、互动性强、益智等诸多优点,成为大部分现代人休闲娱乐的首选。 网络五子棋游戏是使用Java语言开发的一款游戏。它使用SOCKET建立连接,多线程处理数据,以及可嵌入网络浏览器的APPLET作为客户端,这些特点使这款游戏无论是服务器还是客户端的实现都相对容易。通过对该软件的编写,还可以巩固学生对以上各种知识的掌握和理解。

2 JAVA语言概述 JAVA简介 JAVA是Sun Microsystem公司开发的编程语言,是一个简单,面向对象,分布式,解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态的语言。 JAVA的基本特点 (1) 简单性 Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。 Java实现了自动的垃圾收集,简化了内存管理的工作。 (2) 面向对象 Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。 (3) 多线程 多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。 (4) 分布性 Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象。 (5) 体系结构中立 Java是一种网络语言,为使Java程序能在网络的任何地方运行,Java解释器生成与体系结构无关的字节码结构的文件格式。为了使Java的应用程序能不依赖于具体的系统,Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持Java的平台上。 (6) 安全性 用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。 Java中输入/输出流概念 过滤流DataInputStream 和DataOutputStream 除了分别作为FilterInputStream 和FilterOutputStream的子类外,还分别实现了接口 DataInput 和DataOutput。接口DataInput 中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数,如readBoolean()、

简单JA V A五子棋代码 只需要建两个类就可以了 1.MainFrame类继承JFrame类 2.MainPanel类继承JPanel类实现接口MouseListener 两个类详细代码如下 MainFrame类,如下: package game.gobang; import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JFrame; /** * 五子棋 * @WangJB * @version 19:46 13/03/17 */ public class MainFrame extends JFrame{ public static void main(String[] args) { M ainPanel panel = new MainPanel(); MainFrame frame = new MainFrame("五子棋"); frame.setSize(680,680); panel.setBackground(Color.GRAY); frame.add(panel,BorderLayout.CENTER); panel.addMouseListener(panel); frame.setVisible(true); } public MainFrame(){ s uper(); } public MainFrame(String str){ s uper(str); } } MainPanel类如下: package game.gobang; import java.awt.Color; import java.awt.Graphics;

相关主题
相关文档
最新文档