1、java课程设计报告五子棋第一章 软件平台游戏设计思路第二章 小游戏五子棋的开发过程第一节 JAVA基础知识第二节 启动程序的分析第三节 游戏设计过程第三章 总结第四章 参考文献第五章 附录第一章 游戏设计思路 : 第二章 第一节 java程序基础知识本系统有4个程序每个程序都导入了不同的包和类运用了不同的所学知识。不同的类和包提供的方法、类型等都不同,本程序还使用了继承。以至使其能够完成不同的功能。本节主要讲述本系统所使用的基础知识。1、 类的基础1、类的定义 JAVA中的类实质上是一种对象类型,它是对具有相同属性和相同行为对象的一种抽象。类是java程序中最小的组成单位。 2、 Java中
2、类定义的格式为:类修饰符 class 类名 extends 基类 implements 接口/ 成员变量声明 (Member variable declaration) / 成员方法声明 (Member method declaration)其中,class、extends和implements都是Java的关键字。类修饰符、extends和implements是关于修饰符、继承和接口的内容。 2、继承继承性是面向对象程序设计语言的一个重要特征,通过继承可以实现代码的复用。Java语言中,所有的类都是直接或间接的继承 java.lang.object类而得到的。被继承的类称为基类或父类,继承而
3、的来的类成为子类。子类继承基类的方法和属性,同时也可以修改基类的方法和属性 ,并增加自己新的属性和方法。Java不支持多重继承。即一个子类不能拥有两个或以上的父类。3、包1、包的定义 在Java中,把相关的代码组织到一起,称为“包”。包市一种将相关类、接口或其他包组织起来的集合体,目的是为了将包含类代码的文件组织起来,易于查找和使用。2、包的语法及导入:Package PackageName; /包的定义Import java.awt.Color /导入包关键字Import4、接口 1、接口的定义Java中的接口可以看成是一种抽象类,它是一些抽象方法和常量的集合,其主要作用是使得处于不同层次上
4、以至于互不相干的类能够执行相同的操作,引用相同的值,而且在一个类中可以同时实现来自不同接口中的多种方法。 2、接口的定义和实现Interface 接口名/抽象方法 /定义接口Class 类名 implements 接口名称/ 类体 实现接口5、线程1、线程的定义 即同时执行多个程序段,每个程序段都是一个线程。2、线程的周期线程的周期包括新建(new)、就绪(start())、执行(run())、阻塞(sleep()、wait()、suspend()、输入/输出流中发生线程阻塞)、死亡(stop()、destroy())。创建线程的方法:一种是创建Thread类的子类。另一种是实现Runnabl
5、e接口.而本系统采用的是接口的方式。6.Applet小应用程序1、 小应用程序与应用程序的区别:小应用程序没有主方法不能单独运行。而应用程序是拥有主方法的是可以单独运行的。2、Applet 的执行方式它有两种:一种是浏览器中执行,另一种是使用Appletviewer()命令执行。本系统的两个小应用程序都是采用编制html以浏览器形式执行。3、Applet主类的一般框架结构图Import java.awt.*;Import java.applet.*;Public class 类名 extends AppletPublic void init()/初始化变量、设置字体、装载图片Public vo
6、id start()/启动程序执行或恢复程序执行Public void stop()/挂起正在执行的程序,暂停程序Public viod destroy()终止程序的执行释放资源Public viod paint(Graphics g)/ 完成绘制图形等操作7、异常处理 1、异常处理概念异常是Java程序运行出现的错误。 2、异常处理机制异常处理机制:当try子句中抛出的异常属于某个catch子句的异常类时,该catch子句捕获到异常,并且系统自动将异常类的实例传递给catch子句的异常类对象。在catch子句中,可以从异常类对象中获取异常细节,并可通过该对象使用异常类中的方法,对异常进行相应
7、的处理。第二节 启动程序的分析 本程序主要是为了启动主程序所使用。让使用者有个等待时间。本程序运用了多线程机制使其能同时进行多个任务。导入的各包详细见后附录。public class Exec /测试类public static void main(String args) / 显示带有启动进度条的欢迎窗体new DemoWindow(); /实例化一个对象class DemoWindow extends JWindow implements Runnable / 带有启动进度条的欢迎窗体类private JProgressBar progress = new JProgressBar(1,
8、100); / 进度条ImagePanel ip = new ImagePanel(); / 图片面板public DemoWindow() / 构造函数add(ip, BorderLayout.CENTER); / 窗体布局add(progress, BorderLayout.SOUTH); /将进度条放在边界布局管理器南边progress.setStringPainted(true); / 设置进度条progress.setBorderPainted(false);progress.setString(正在启动应用程序.);progress.setForeground(Color.blue
9、);progress.setBackground(Color.white);setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR); / 设置窗体光标/ 设置窗体正好显示整个图片 pack();/ 设置窗体居中显示Toolkit theKit = getToolkit();Dimension wndSize = theKit.getScreenSize();setLocation(wndSize.width - ip.getWidth() / 2, (wndSize.height - ip .getHeight() / 2);setVi
10、sible(true); / 设置窗体为可见this.toFront();/ 将当前窗体置于屏幕所有窗体的前面Thread splashThread = new Thread(this); /新建线程splashThread.start(); / 启动改变进度条的线程public void run() / 改变进度条的线程方法try /异常处理机制for (int i = 0; i 100; i+) / 循环100次Thread.sleep(100); / 暂停0.1秒progress.setValue(progress.getValue() + 1); / 累加进度条的进度if (progr
11、ess.getValue()=100) 判断进度条的值是否是100 jsb dd=new jsb(我的记事本); 若是则实例化jsb对象即启动主程序 catch (Exception e) 若出现异常则打印出相应的消息 System.out.println(e.getMessage();this.dispose(); / 释放窗体资源class ImagePanel extends JPanel / 图片面板Image image = null; / 图片内容public ImagePanel() / 构造函数MediaTracker tracker = new MediaTracker(th
12、is); / 创建MediaTracker类变量,以加载图片,它可以保证图片加载完毕后才会进行下一步操作try /异常处理image = Toolkit.getDefaultToolkit().getImage(images/tl.jpg); / 加载图片tracker.addImage(image, 0); / 等待图片加载完毕tracker.waitForID(0);catch (Exception e) /若出现异常则打印出消息System.out.println(e.getMessage();setPreferredSize(new Dimension(image.getWidth(t
13、his), image.getHeight(this); / 设置图片面板的大小正好容纳整个图片public void paintComponent(Graphics g) / 重载的绘图函数,绘制指定图片super.paintComponent(g); /调用基类的方法g.drawImage(image, 0, 0, this); 第三节 游戏设计过程本程序是根据小游戏五子棋开发出来的,从游戏开始到结束,此下为小部分代码分析:1 新建一个java文件:2. 编写代码3. 运行4. 总分析:设计了游戏按照棋子的二维数组进行绘制棋子,玩家下棋后,程序修改数组相应位置,设置isPlayer1值,然
14、后重新绘制(repaint),就更新了棋盘界面。由于游戏的功能简单,也为了使游戏的操作尽可能的简便,我不在游戏进入时设计菜单,而是直接开始对战,在对战界面,设置了重新开始和退出的按钮。即运行即玩,可以悔档,存档,取档,重开 总结1.Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open NetEnvironment)体系。2.Java语法:I/O包,Util包,Lang包.3.Servlet:就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servle
15、t,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。4.Javabean:可以把你的JSP中的Java代码封装起来,便于调用也便于重用参考文献1、Java语言程序设计 主编: 贾振华 副主编:黄荣盛 贾振旺2、 查询相关资料3、王克宏.Java技术及其应用 北京:高等教育出版社,19944、林邦杰,彻底研究Java2。北京:电子工业出版社,20025、温平进、张威等。Instant Java2 实例解析。北京:北京希望电子出版社,20026、林建铭.精通Java2.北京:科学出版社,20017、王胜捷.Java程序设计。北京:中国铁道出版社,200
16、28、东方华人.Java2入门与提高.北京:清华大学出版社,20009、洪威恩.Java2面向对象程序设计.北京:中国铁道出版社 200210、杜江、沈应逵。Java2实例教程.北京:清华大学出版社,200311、金勇化、曲俊生等.Java网络高级教程.北京:北京希望电子出版社,200212、张利国.Java实用案例教程。北京:清华大学出版社, 200313、孙一林.Java语言程序设计.北京:清华大学出版社,200114、殷兆麟.Java语言程序设计.北京:高等教育出版社,200215、殷兆麟.Java网络编程基础.北京大学出版社,200416、教育部考试中心.全国计算机等级考试大纲(200
17、4年)版.北京:高等教育出版社,200417、孙燕.Java程序设计培训教程.北京:清华大学出版社,2002附录(代码)import java.util.*;import java.io.*;import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;class Gobang extends JFrame implements Runnable, ActionListener final static int Player=1; final static int AI =-1; Clas
18、sLoader cl = this.getClass().getClassLoader(); Toolkit tk = Toolkit.getDefaultToolkit(); int length=14, game_state, winner, check, step; int grid = new intlengthlength; int locX, locY /* 囱 竚 */, count /* 硈囱计 */, x, y /* 既 竚 */, displace_x=0, displace_y=0 /* 簿秖 */, direction; ArrayList steps = new Ar
19、rayList(); /* 癘魁囱 */JPopupMenu control_menu = new JPopupMenu(); /* 龄匡虫 */ JMenuItem command = new JMenuItem4; String command_str= 囱, 郎, 弄郎, 秨;int dir = -1, -1, -1, 0, -1, 1, 0, -1, 0, 1, 1, -1, 1, 0, 1, 1 ; boolean dir2 = new boolean8; boolean turn; String message; final JDialog dialog = new JDialog
20、(this, 叫匡 , true);Font font=new Font(new_font, Font.BOLD, 20); Grid grids = new Gridlengthlength; Image white= tk.getImage(cl.getResource(res/white.png); Image black= tk.getImage(cl.getResource(res/black.png); Image title= tk.getImage(cl.getResource(res/title.png); Image temp; JPanel boardPanel, big
21、panel; JRadioButton choice = new JRadioButton2;final static int Start =0; final static int Select =1; final static int Playing =2; final static int End =3;final static int nil=-1; /* 礚 */ final static int oblique_1 =0; /* */ final static int oblique_2 =1; /* */ final static int horizontal =2; /* 绢 *
22、/ final static int vertical=3; /* */ Gobang ( ) super( 囱); boardPanel = new JPanel(); boardPanel.setLayout(new GridLayout(length, length, 0, 0);boardPanel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); for(int i=0; ilength; i+) for(int j=0; jlength; j+) gridsij = new Grid(i, j); boardP
23、anel.add(gridsij); bigpanel = new JPanel(); bigpanel.add(boardPanel, BorderLayout.CENTER); getContentPane().add(bigpanel, BorderLayout.SOUTH); game_state=Start; ThreadStart(); dialog.setSize(160, 100); dialog.setResizable(false); dialog.setLocationRelativeTo(null); ButtonGroup choice_group = new But
24、tonGroup(); JPanel choice_menu = new JPanel(); choice0 = new JRadioButton(堵 , new ImageIcon(black), true); choice1 = new JRadioButton( , new ImageIcon(white); for(int i=0; ichoice.length; i+) choice_menu.add(choicei); choice_group.add(choicei); for(int i=0; i=0 & x=0 & y=0 & x=0 & y=5) game_state=End; winner=chec
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1