当前位置:文档之家› 象棋程序设计

象棋程序设计

象棋程序设计
象棋程序设计

象棋程序设计

1.课程设计目的

Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。

为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了一周的Java程序设计课程设计。

通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。

2.设计方案论证

2.1功能描述

象棋是中国一种流传十分广泛的游戏。下棋双方根据自己对棋局形式的理解和对棋艺规律的掌握,调动车马,组织兵力,协调作战在棋盘--这块特定的战场上进行着象征性的军事战斗。本程序的功能就是将棋盘和棋子在电脑上模拟出来,双方可以通过鼠标对己方棋子的操作进行对弈。

2.2概要设计

象棋,人人会走,把己方的棋子按不同棋子的规则放在棋盘合适的位置上。象棋包含三个要素:棋盘、棋子和规则。在本象棋程序的设计上,也大致遵循这三个要素,但是细化为四个方面:棋盘、棋盘上可以走棋的落子点、棋子和象棋规则。

棋盘:绘制棋盘时,进行画横线,画最左侧的竖线,画最右侧的竖线,画中间的竖线,画斜线等操作。棋盘其实就是一张棋盘的图形,我们要在计算机上的棋盘上落子并不像在现实生活中那么容易,这里说的棋盘充其量只是背景。

落子点:真正落子的地方必须是我们在图形界面上设定的落子点。落子点其实就是在图形界面上定义一个应该摆放棋子的点位置。

棋子:包括棋子名和棋子颜色和棋子所属方等信息。

象棋规则:不同棋子只能按照各自的规则在这些设定的位置上摆放、搏杀。 根据前面的细化,程序中分别设计了四个类对应棋盘、落子点、棋子和象棋规则这四个方面。四个类几乎包括了程序的全部,程序框图如下图所示:

图1 .程序功能框图

2.3详细设计 2.

3.1棋子类Chess

Swing 中并没有棋子这个组建类,所以我们必须设计一个组件,棋子其实就是圆形的JLabel ,但Swing 中的JLabel 组件是方形的,没关系,利用JLabel 我们可以创建圆形的JLabel 组件——Chess 。 2.3.2落子点类Point

在平面中确定一个点需要X 坐标和Y 坐标,在图形界面中确定一个点同样也需要X 坐标和Y 坐标。图形界面的左上角的坐标为(0,0),X 数值往右增大,Y 数值往下增大。

中国象棋

棋 子

子 点

绘 制 棋 盘 象 棋 规 则

棋 子 名

棋 子 颜 色

棋 子 所 属 方

画 最 左 侧 竖 线

画 最 右 侧 竖 线

画 中 间 竖 线

画 斜 线

画 横 线

落子点其实就是在图形界面上定义一个应该摆放棋子的点位置,棋子摆放在任何位置都视为非法,除了落子点。当然,描述一个点位置仅仅是类Point的基本功能之一,他还需要知道这个点上是否已有棋子以及是什么棋子。

2.3.3棋盘类ChessBord

棋盘其实就是我们看到的一个图形界面,将棋盘设计为JPanel类,在Jpanel 这个容器上,我们可以利用坐标确定落子点,也可以加入我们自定义的棋子组件。 JPanel容器其实就像有底色的画布,有了落子点和棋子,还需要我们自己画横线和竖线。ChessBord继承了JPanel,覆写方法paintCompont,实例化JPanel 时,会自动调用该方法。

2.3.4规则类ChessRule

ChessRule类的作用就是判断走棋是否合法。实现思路就是根据走棋的起点和终点计算走棋路线中是否有其他的棋子,再依据是何种棋子判断走棋是否合法。

2.3.5类ChessFrame

虽然上面4个类实现了象棋程序的所有功能,但还需要一个底层窗口容器加载ChessBoard这个JPanel。并添加相应的菜单。

3.设计结果与分析

程序运行之后,可以实现两个人分别控制红方和黑方的棋子进行对弈,缺点就是程序过于简单,只能实现上述功能,不能悔棋,没有计时功能,也不能实现人机对弈功能。程序运行结果如下所示:

图2. Chess类的运行结果“车”

绘制“中国象棋棋盘”,通过定义划横线,画左侧的竖线,画最右侧的竖线,画中间的竖线,画斜线等操作,输出程序的棋盘的运行结果。

图3.中国象棋棋盘

通过定义X坐标,Y坐标,和棋子,并将棋子加入到棋盘上的指定位置,输出中国象棋开局的程序运行结果。

图4.中国象棋程序运行效果图——开局

图5.中国象棋程序运行效果图——残局

4.设计体会

通过对java的课程设计,针对java的书本知识得到了进一步的巩固,具体化就是加深了我对图形用户界面理解,对程序的深层理解,清楚程序中每一步的功能,在程序的运行中是十分重要的,一个好的结构在运行中能够充分的发挥程序的功能。把书本上学习到的知识应用到实际中去,很好的锻炼了我编写java 语言的能力。结构设计的合理性决定了这个程序的价值。在今后的学习中我要注意这方面,使得我的编程能力能有进一步的提高。

在整个设计过程中,通过各种渠道获取资料。利用周末去大的书店查资料,把重要的东西记录下来,也去图书馆借了一些相关的参考资料,同时还充分利用网上资源查一些资料。最后再综合这些资料,在理工实验楼进行具体的操作。从做课题设计的过程中,我的体会挺多的,感觉到只要有信心与耐心,没有做不到的事情。因为在这个过程中写代码与调试的过程中确实需要耐心与信心,否则就不可能写完整。总之,本次课程设计使自己收益非浅,为自己以后进入社会工作提供了一次不可多得的锻炼和实践的机会。

5.参考文献

[1].孙全党王吴迪赵枫朝,Java程序设计应用教程,电子工业出版社,2006.2

[2].雷之宇,Java项目开发实践—网络篇,中国铁道出版社,2005.5

[3]陈轶.姚晓昆编著.Java程序设计实验指导.北京:清华大学出版社,2006

[4]杨昭编著.二级Java语言程序设计教程.北京:中国水利水电出版社,2006

[5]赵文靖编著.Java程序设计基础与上机指导.北京:清华大学出版社,2006

附录

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class Chess extends JLabel

{

private String name; //棋子名

private Color chessColor; //棋子颜色

private String player; //棋子所属方

public Chess(String name,String player,Color chessColor,int round)

{

https://www.doczj.com/doc/2f10592457.html,=name;

this.player=player;

this.chessColor=chessColor;

this.round=round;

setBackground(Color.white); //设置背景色为白色

}

public void paint(Graphics g)

{

g.setColor(Color.yellow); //设置当前色

g.drawOval(1,1,round-1,round-1); // 用当前色绘制椭圆边框

g.setColor(Color.green);

g.fillOval(1,1,round-1,round-1); //用当前色填充一个椭圆

g.setColor(chessColor); //设置当前色

g.setFont(new Font("隶书",Font.BOLD,40)); //设置当前字体

g.drawString(name,10,round-18); //绘制文本

}

public int getWidth()

{

return round;

}

public int getHeight()

{

return round;

}

public int getRound(){

return round; private int round; //棋子直径}

public String getName()

{

return name;

}

public Color getChessColor()

{

return chessColor;

}

public void setPlayer(String player)

{

this.player=player;

}

public String getPlayer()

{

return player;

}

public static void main (String[] args) {

JFrame frame=new JFrame(); // TODO 自动生成方法存根JPanel panel=new JPanel();

panel.setLayout(new GridLayout(1,1));

Chess chess=new Chess("车","red",Color.red,60);

panel.add(chess);

frame.add(panel);

frame.setSize(100,100);

frame.setVisible(true);

}

}

public static void main (String[] args) {

JFrame frame=new JFrame(); // TODO 自动生成方法存根

JPanel panel=new JPanel();

panel.setLayout(new GridLayout(1,1));

Chess chess=new Chess("帅","blue",Color.blue,60);

panel.add(chess);

frame.add(panel);

frame.setSize(100,100);

frame.setVisible(true);

}

public class Point

{

int placeX; //X坐标值

int placeY; // Y坐标值

boolean hasChess=false; //是否有棋子

Chess chess=null;

public Point(int x,int y){

this.placeX=x;

this.placeY=y;

}

public int getPlaceX(){

return placeX;

}

public int getPlaceY(){

return placeY;

}

0 public void setHasChess(boolean hasChess){

this.hasChess=hasChess;

}

public boolean getHasChess(){

return hasChess;}

public void addChess(ChessBoard chessboard,Chess chess){

this.chess=chess;

hasChess=true;

chess.setBounds(placeX-chess.getRound()/2,placeY-chess.getRound()/2,

chess.getRound(),chess.getRound()); //设置Chess的位置

chess.addMouseMotionListener(chessboard); //加入

MouseMotionListener监听器

chess.addMouseListener(chessboard); //加入MouseListener

chessboard.add(chess); //棋盘中加入Chess

chessboard.repaint(); //重绘棋盘

}

public Chess getChess(){

if(chess!=null){

return chess;

}

return null;

}

public void setChess(Chess chess){

this.chess=chess;

if(chess==null){

hasChess=false;

}else{

hasChess=true;

}

}

1

}

public void paintComponent(Graphics g){

super.paintComponent(g);

drawBoard(g);

}

public void drawBoard(Graphics g){

for(int i=0;i

{

g.drawLine(initX, i*interval+initY, (xPoint-1)*interval+initX, i*interval+initY);

}

g.drawLine(initX, initY, initX,(yPoint-1)*interval+initY ); //画最左侧的竖线

g.drawLine((xPoint-1)*interval+initX,initY,(xPoint-1)*interval+initX ,

(yPoint-1)*interval+initY); //画最右侧的竖线

for(int j=1;j

{

g.drawLine(j*interval+initX, initY, j*interval+initX, 4*interval+initY);

g.drawLine(j*interval+initX,5*interval+initY,j*interval+initX,(yPoint-1)*interval+ initY);

}

g.drawLine(3*interval+initX, initY, 5*interval+initX,2*interval+initY );//画斜线

g.drawLine(3*interval+initY, 2*interval+initY,5*interval+initX, initY);

g.drawLine(3*interval+initX,(yPoint-1)*interval+initY,5*interval+initX, (yPoint-3)*interval+initY);

g.drawLine(3*interval+initX,(yPoint-3)*interval+initY,5*interval+initX,

(yPoint-1)*interval+initY);

}

import java.sql.Statement;

2 public class ChessRule {

private Point startPoint;

private Point endPoint;

private int interval;

private int initX;

private int initY;

Point[][] choicePoint;

public ChessRule(Point startPoint,Point endPoint,int interval,int initX,int initY,Point[][]

choicePoint){

this.startPoint=startPoint;

this.endPoint=endPoint;

this.interval=interval;

this.initX=initX;

this.initY=initY;

this.choicePoint=choicePoint;

}

private boolean isPoint(){

if(startPoint!=null&&endPoint!=null){

if(endPoint.hasChess){

if(startPoint.getChess().getPlayer().equals(endPoint.getChess().getPlayer())){

return false;

}

}

return true;

}

return false;

}

private boolean checkRule(String name){

if(name.equals("车")){

3 if(startPoint.getPlaceX()==endPoint.getPlaceX()||startPoint.getPlaceY()==endPoint.getPlace

Y()){

if(hasBlock(name)==0){

return true;

}

}

return false;

}

if(name.equals("马")){

if(Math.abs(startPoint.getPlaceX()-endPoint.getPlaceX())==2*interval&&Math.abs(startPoin

t.getPlaceY()-endPoint.getPlaceY())==interval)

{

if(hasBlock(name)==0){

return true;

}

}

if(Math.abs(startPoint.getPlaceX()-endPoint.getPlaceX())==interval&&Math.abs(startPoint.getPla

ceY()-endPoint.getPlaceY())==2*interval)

{

if(hasBlock(name)==0){

return true;

}

}

}

if(name.equals("象")){

if(startPoint.getChess().getPlayer().equals("PlayerA")){

if(endPoint.getPlaceY()>4*interval+initY){

return false;

}

4 }

if(startPoint.getChess().getPlayer().equals("PlayerB")){

if(endPoint.getPlaceY()<5*interval+initY){

return false;

}

}

if(Math.abs(startPoint.getPlaceX()-endPoint.getPlaceX())==2*interval&&Math.abs(startPoin

t.getPlaceY()-endPoint.getPlaceY())==2*interval){

if(hasBlock(name)==0){

return true;

}

}

}

if(name.equals("兵")){

if(endPoint.getPlaceY()

return false;

}

if(endPoint.getPlaceX()==startPoint.getPlaceX()&&Math.abs(endPoint.getPlaceY()-startPoi

nt.getPlaceY())==interval){

return true;

}

if(startPoint.getPlaceY()>4*interval+initY){

if(endPoint.getPlaceY()==startPoint.getPlaceY()&&Math.abs(endPoint.getPlaceX()-startPoi

nt.getPlaceX())==interval){

return true;

}

}

}

if(name.equals("卒")){

5 if(endPoint.getPlaceY()>startPoint.getPlaceY()){

return false;

}

if(endPoint.getPlaceX()==startPoint.getPlaceX()&&Math.abs(startPoint.getPlaceY()-endPoi

nt.getPlaceY())==interval){

return true;

}

if(startPoint.getPlaceY()<5*interval+initY){

if(endPoint.getPlaceY()==startPoint.getPlaceY()&&Math.abs(startPoint.getPlaceX()-endPoi

nt.getPlaceX())==interval){

return true;} } }

if(name.equals("士")){

if(startPoint.getChess().getPlayer().equals("PlayerA")){

if(endPoint.getPlaceX()<3*interval+initX||endPoint.getPlaceY()>2*interval+initY){

return false;

}

if(endPoint.getPlaceX()>5*interval+initX||endPoint.getPlaceY()>2*interval+initY){

return false;

}

}

if(startPoint.getChess().getPlayer().equals("PlayerB")){

if(endPoint.getPlaceX()<3*interval+initX||endPoint.getPlaceY()<7*interval+initY){

return false;

}

if(endPoint.getPlaceX()>5*interval+initX||endPoint.getPlaceY()<7*interval+initY){

return false;

}

if(Math.abs(startPoint.getPlaceX()-endPoint.getPlaceX())==interval&&Math.abs(startPoint.g etPlaceY()-endPoint.getPlaceY())==interval){

return true;

}

}

if(name.equals("将")){

if(startPoint.getChess().getPlayer().equals("PlayerA")){

if(endPoint.getPlaceX()<3*interval+initX||endPoint.getPlaceY()>2*interval+initY){

return false;

}

if(endPoint.getPlaceX()>5*interval+initX||endPoint.getPlaceY()>2*interval+initY){

return false;

}

}

if(startPoint.getChess().getPlayer().equals("PlayerB")){

if(endPoint.getPlaceX()<3*interval+initX||endPoint.getPlaceY()<7*interval+initY){

return false;

}

if(endPoint.getPlaceX()>5*interval+initX||endPoint.getPlaceY()<7*interval+initY){

return false;

}

}

if(endPoint.getPlaceX()==startPoint.getPlaceX()&&Math.abs(endPoint.getPlaceY()-startPoi nt.getPlaceY())==interval){

return true;

if(endPoint.getPlaceY()==startPoint.getPlaceY()&&Math.abs(endPoint.getPlaceX()-startPoi nt.getPlaceX())==interval){

return true;

}

}

if(name.equals("炮")){

if(startPoint.getPlaceX()==endPoint.getPlaceX()||startPoint.getPlaceY()==endPoint.getPlace Y()){

if(endPoint.hasChess&&hasBlock(name)==1){

return true;

}

if(!endPoint.hasChess&&hasBlock(name)==0){

return true;

}

}

return false;

}

return false;

}

private int hasBlock(String name){

int blocks=0;

int pointsX=Math.abs(endPoint.getPlaceX()-startPoint.getPlaceX())/interval;

int pointsY=Math.abs(endPoint.getPlaceY()-startPoint.getPlaceY())/interval;

int startX=(startPoint.getPlaceX()-initX)/interval;

int startY=(startPoint.getPlaceY()-initY)/interval;

//System.out.println("startX"+startX);

//System.out.println("startY"+startY);

int endX=(endPoint.getPlaceX()-initX)/interval;

8 int endY=(endPoint.getPlaceY()-initY)/interval;

System.out.println("endX"+endX);

System.out.println("endY"+endY);

System.out.println("pointsX"+pointsX);

System.out.println("pointsY"+pointsY);

if(name.equals("车")||name.equals("炮")){

if(pointsX==0){

if(endY>startY){

for(int i=1;i

if(choicePoint[startY+i][startX].hasChess){

blocks++;

}

}

}else{

for(int i=1;i

if(choicePoint[startY-i][startX].hasChess){

blocks++;

}

}

}

}

if(pointsY==0){

if(endX>startX){

for(int i=1;i

if(choicePoint[startY][startX+i].hasChess){

blocks++;

}

}

}else{

for(int i=1;i

9

if(choicePoint[startY][startX-i].hasChess){

blocks++;

}

}

}

}

}

if(name.equals("象")){

if(endXstartY){

if(choicePoint[startY+1][startX-1].getHasChess()){

blocks=1;

}

}

if(endX

if(choicePoint[startY-1][startX-1].getHasChess()){

blocks=1;

}

}

if(endX>startX&&endY>startY){

if(choicePoint[startY+1][startX+1].getHasChess()){

blocks=1;

}

}

if(endX>startX&&endY

if(choicePoint[startY-1][startX+1].getHasChess()){

blocks=1;

}

}

}

if(name.equals("马")){

0 if(pointsX==1){

if(endY>startY){

if(choicePoint[startY+1][startX].getHasChess()){

blocks=1;}

}

else{

if(choicePoint[startY-1][startX].getHasChess()){

blocks=1;

}

}

}

if(pointsX==2){

if(endX

if(choicePoint[startY][startX-1].getHasChess()){

blocks=1;

}

}else{

if(choicePoint[startY][startX+1].getHasChess()){

blocks=1;

}

}

}

}

System.out.println(""+blocks);

return blocks;

}

public boolean check(){

if(!isPoint()){

return false;

}

绘制象棋棋盘

沈阳航空航天大学 课程设计 学号2009040603046 班级94060302 姓名崔凯宏 指导教师刘学平 2011年7月6 日

沈阳航空航天大学 课程设计任务书 学院:机电工程学院专业:车辆工程班级:94060302 学号:2009040603046 题目:绘制象棋棋盘 一、课程设计时间 2011年6月27日~2011年7月1日(第17周),共计1周。 二、课程设计内容 在窗体上或者PictureBox控件上绘制象棋棋盘(不必表示棋子)。 要求,程序运行后,如果改变了窗体的大小,棋盘将作同比例的改变。 三、课程设计要求 程序质量: ?贯彻事件驱动的程序设计思想。 ?用户界面美观、醒目,操作方便;可以加以其它功能或修饰。 ?代码应适当缩进,并给出必要的注释,以增强程序的可读性。 课程设计说明书: ?课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提 供的模板。 四、指导教师和学生签字 指导教师:________ 学生签名:________ 五、成绩 六、教师评语

目录 一、需求分析 (4) 二、设计分析 (5) 三、关键技术 (7) 四、总结 (9) 五、完整的源程序 (10) 六、参考文献 (11)

一、需求分析 此程序要求绘制象棋棋盘,同时使界面清晰、美观,操作简单,程序运行后,如果改变了窗体的大小,棋盘将作同比例的改变。 要求: ① 贯彻事件驱动的程序设计思想。 ② 用户界面美观、醒目,操作方便;可以加以其它功 能或修饰。 ③ 代码应适当缩进,并给出必要的注释,以增强程序 的可读性。

二、设计分析 (1)基本原理:利用VB 提供的丰富的图形功能,通过图形 控件进行图形和绘图操作,然后通过图形方法在窗体上输出图形和文字,主要运用VB 图形方法的Cls 功能使棋盘可以随着窗体大小的变化而成比例变化。 图1 总体设计 呈现棋盘 利用坐标绘制 图形 定义窗 体坐标系

Java程序设计-实验报告1-模板 (1)

实验报告 课程名称Java程序设计 实验项目实验一类和对象 系别_________计算机_________ 专业/班级_______计算机类/1402______ 姓名_____李馨雪________ 实验日期______2015.10.10______ 成绩_______________________ 指导教师

一、实验题目:实验一类和对象 二、实验内容: (1)用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。 1)PC类与CPU类和HardDisk类关联的UML图如图所示。 其中,CPU类要求getSpeed()返回speed的值,setSpeed(int m)方法 将参数m的值赋值给speed。 HardDisk类要求getAmount()返回amount的值,setAmount(int m)方 法将参数m的值赋值给amount。 PC类要求setCPU(CPU c)将参数c的值赋值给cpu,要求setHardDisk (HardDisk h)方法将参数h的值赋值给HD,要求show()方法能显示 cpu的速度和硬盘的容量。 2)主类Test的要求 main()方法中创建一个CPU对象cpu,其speed设置为2200; main()方法中创建一个HardDisk对象disk,其amount设置为200; main()方法中创建一个PC对象pc, pc调用setCPU方法,实参是cpu;调用setHardDisk方法,实参是 disk;调用show方法。 (2)设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下: 1)编写接口Animal,有2个抽象方法cry()和getAnimaName(); 2)编写模拟器类Simulator,该类有一个playSound(Animal animal)方法,其形参是Animal类型,可以调用实现Animal接口的类所重写的cry()方法播放具体动物的声音,调用重写方法显示动物种类的名称; 3)编写实现Animal接口的Dog类和Cat类。具体的UML图如下所示:4)编写主类Application,其main方法中至少包含如下代码: Simulator si=new Simulator();

java课程设计实验报告

一实验目的 加深学生对课堂讲授内容的理解,从计算机语言的基本概念、程序设计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良好基础。在上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。在对Java 程序的调试过程中,提高学生分析程序中出现的错误和排除这些错误的能力。通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。 二、实验要求 (1)问题描述准确、规范; (2)程序结构合理,调试数据准确、有代表性; (3)界面布局整齐,人机交互方便; (4)输出结果正确; (5)正确撰写实验报告。 三、设计内容 1、计算器 计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。要求使用Applet实现该计算器,当用浏览器运行程序时,点击网页中的按钮,则计算器弹出,浮在网页上,再次点击按钮时,计算器消失。 2、文本编辑器 可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。其他功能参照windows的文本编辑器。

四.实验步骤 (1)上机实验之前,为课程设计的内容作好充分准备。对每次上机需要完成的任务进行认真的分析,画出程序流程图,手工写出符合任务要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。 (2)按照实验目的和实验内容进行上机操作。录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。 (3)根据实验结果,写出实验报告。 五. 源代码及运行结果 1.计算器源代码 import .*; import .*; import .*; public class jisuanqi extends WindowAdapter { , "=", "+","n!" ,"关闭" }; static double a, sum=1; static String s, str ;rame(); } public void frame() { etBackground; txt = new TextField(""); (false);ddActionListener(new buttonlistener());ddActionListener(new close()); (this); (new BorderLayout());.计算器运行界面(1)计算器主界面

Java程序设计实验报告分析

学生实验报告 (理工类) 课程名称: JAVA程序设计专业班级: 13电子信息工程(2)学生学号: 1305102056 学生姓名:许伟铭 所属院部:软件工程学院指导教师:王倩倩 20 15 ——20 16 学年第 2 学期 金陵科技学院教务处制

实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求 实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:JAVA编程基础实验学时: 4 同组学生姓名:————实验地点: 1514/A203 实验日期: 2016.04.08 实验成绩: 批改教师:王倩倩批改时间:

一、实验目的和要求 (1)熟练掌握JDK1.7及Eclipse Kepler Service Release 1(下简称Eclipse)编写调试Java应用程序及Java小程序的方法; (2)熟练掌握Java应用程序的结构; (3)了解Java语言的特点,基本语句、运算符及表达式的使用方法; (4)熟练掌握常见数据类型的使用; (5)熟练掌握if-else、switch、while、do-while、for、continue、break、return 语句的使用方法; (6)熟练掌握数组和字符串的使用; (7)调试程序要记录调试过程中出现的问题及解决办法; (8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验; (9)做完实验后给出本实验的实验报告。 二、实验仪器和设备 奔腾以上计算机,Windows 操作系统,装有JDK1.7和Eclipse软件。 三、实验过程 (1)分别使用JDK命令行和Eclipse编译运行Java应用程序。记录操作过程。 Java应用程序参考如下: 思考:1. 适当添加注释信息,通过javadoc生成注释文档; 2. 为主方法传递参数“Hello world”字符串,并输出; 3. 压缩生成".jar"文件。 (2)分别使用JDK命令行和Eclipse编译Java Applet,并建立HTML文档运行该Applet。 记录操作过程。 Java小应用程序参考如下:

中国象棋棋盘和棋子的的设计与加工

毕业设计(论文)题目中国象棋棋盘与棋子的设计与加工

目录 容摘要 (1) 前言 (2) 第1章中国象棋的简介 (3) (一)中国象棋的起源与发展 (3) (二)象棋介绍 (3) (三)中国象棋游戏规则 (3) 第二章数控机床概述 (5) (一)数控机床的产生与发展 (5) (二)数控机床的特点 (5) (三)数控机床分类 (5) 第三章中国象棋的设计 (7) (一)中国象棋的设计理念 (7) (二)象棋的草图设计及绘制 (7) (三)象棋实体造型 (7) 第四章中国象棋的数控加工 (12) (一)中国象棋加工工艺分析 (12) (二)中国象棋加工过程 (17) (三)成品展示 (24) 结语 (27) 辞 (28) 参考文献 (29)

容摘要:数控技术及数控装备已成为关系国家战略和体现国家综合实力水平的重要基础性产业,其水平高低是衡量一个国家制造业现代化程度的核新标志。数控技术的应用不但给传统制造业带来了革命性的变化,使制造业成为工业化的象征。数控技术是现代制造业实现自动化、柔性化、集成化生产的基础,离开了数控技术,先进制造技术就成了无本之木。 本论文主要介绍象棋的设计原理与加工,结合绘图软件、数控仿真软件以及实际操作加工。涵盖了从设计棋子到加工实体模型的整个过程。 关键词:数控机床操作象棋设计加工 Abstaract:Numerical control technology and numerical control equipment has become a national strategy relationship and reflect the national comprehensive strength level of important basic industry, it’s levei is the measure of a country manufacturing modernization degree of nuclear new mark.Not only the numerical control technology application for the traditional manufacturing industry has brought the revolutionary change, causes the manufacturing industry to become the industrialization the symbol. Numerical control technology is the modern manufacturing automation, flexibility, integration production base, left the numerical control technology, advanced manufacturing technology became like. This paper mainly introduces the design principle and processing

JAVA程序设计实验报告格式

《JA V A程序设计》实验报告 题目JAVA基础实战——Bank项目 专业及班级计算机科学与技术120?班 姓名________ ______ _____ __ _ 学号_________ __ _____ 指导教师_____ 孙艺珍____ __________ 日期____________2014年11月_____ __

一、实验目的 《Bank项目》以银行业务为背景,由8 组由浅入深的模块构成,通过实验,可以对面向对象的封装性、构造器、引用类型的成员变量、异构数组、继承、多态、方法的重载、方法的重写、包装类、单例模式、异常、集合等技术有更深刻的理解。 二、实验内容: 可以完成银行业务中的基本操作:添加客户,创建异构账户、储蓄卡业务(存钱、取钱)和信用卡业务(包括透支保护等)业务。 三、实验原理 该项目包含Bank、Customer、Account、SavingsAccount、CheckingAccount、OverdraftException、CustomerReport、TestBanking 等8 个类构成,Bank 和Customer、Customer 和Account(SavingsAccount、CheckingAccount)、CheckingAccount 和OverdraftException、CustomerReport 和Bank 及TestBanking 之间以方法参数、成员变量的方式建立引用、依赖关系。 (可以写一下实验过程的思路和采用的技术) 四、实验过程与结果 一些业务逻辑的流程图以及实现的结果 五、分析与讨论 对于实验结果的讨论,对于异常的分析,对于未来功能扩展的设想等等

《用word制作中国象棋》教案设计

《用word制作中国象棋》教学设计 【设计思想】 本节课的教学设计思路是:第一阶段,先进行游戏展示:棋盘和棋子。让学生观察讨论,在讨论中发现制作棋盘、棋子的要素。第二阶段,动手试一试,让学生按照所找出的绘制棋盘、棋子的要素进行制作。让学生在实践中体会制作象棋的方法。第三阶段,教师引导学生发现制作过程中一些细节问题。第四阶段,通过优秀作品展示与交流,激发学生的学习热情。本节课的设计,教师扮演指导者的角色,教师通过问题和任务引导学生,学生通过试探、讨论和自主学习等活动,了解制作中国象棋的要素,通过实践,学会制作棋盘和棋子,在制作过程中探究表格绘制、自选图形设置及审美能力培养。 【对象分析】 在知识准备方面,学生经过前面课程的学习,掌握了word的基本操作技能:表格制作、艺术字、文本框的制作、图形插入,但对于大部分学生来说,还没有真正地把学科知识和所掌握的基本技能应用到实际问题中,教师在教学过程中要注意引导学生去发现问题、提出问题、分析问题、解决问题。 【策略与方法】 本节课采用“以学生为中心”的教学策略,在教学方法上以问题教学和活动教学为主,同时采用自主探究、任务驱动、主体归纳等教学方法,依据“建构主义理论”让学生在活动中认识到象棋制作的要素以及制作技巧。 【教学资源】 多媒体教室、中国象棋小游戏、《中国象棋制作步骤》.ppt课件 【课时安排】 1课时 【教学目标】

1.知识与技能:了解中国象棋的制作。巩固复习在表格制作、边框和底纹、自选图形及添加文字的方法与技巧,并能够选中文档中的多个不同对象,使其组合成一个对象。 2.过程与方法:逐步学会自主发现、自主探索的学习方法。学会在学习中反思、总结,调整自己的学习目标。 3.情感态度与价值观:学会综合运用信息技术的知识与技能解决实际问题,激发学习信息技术学科的兴趣。培养学生规划能力和审美情趣。 【教学重难点】 重点:将表格制作、边框和底纹设置、自选图形及文字添加设置。 难点:1、棋子排列调整,以及文字、自选图形的方向、颜色设置。 2、规划能力和审美情趣的培养。 【教学过程】

Java程序设计基础实验报告

Java程序设计基础实验报告50—53 实验50 FileInputStream类的应用 实验目的: 1.学习FileInputStream类的语法格式 2.学习FileInputStream类的使用 实验要求 编写一个Java程序,在main()中生成FileInputStream的一个实例,使它能打开文件myfile.txt,并能够把文件内容显示在屏幕上。 程序运行效果:如图所示 程序模板:package https://www.doczj.com/doc/2f10592457.html,.tt; import java.io.*; class ShowFile { public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub int i; FileInputStream fin; fin=new FileInputStream("d:\\myfile.txt"); do{ i=fin.read(); if(i!=-1) System.out.print((char)i); }while(i!=-1); fin.close(); } }

实验51 FileOutputStream类的应用 实验目的: 3.学习FileOutputStream类的语法格式 4.学习FileOutputStream类的使用 实验要求:编写一个Java程序,把文件myfile.txt复制到youfile.txt文件中。 程序运行效果:如图所示 程序模板:package https://www.doczj.com/doc/2f10592457.html,.tt; import java.io.*; class CopyFile { public static void main(String[] args) throws IOException{ // TODO Auto-generated method stub int i; FileInputStream fin; FileOutputStream fout; fin=new FileInputStream("d:\\myfile.txt"); fout=new FileOutputStream("d:\\yourfile.txt"); do{ i=fin.read(); if(i!=-1) fout.write(i); }while(i!=-1); fin.close(); fout.close(); System.out.print("myfile.txt内容已经被复制到yourfile.txt文件中"); } }

Java程序设计大作业实验报告

目录 一、前言 (2) 二、需求分析 (3) 三、系统总体设计 (3) 3.1系统总体设计系统思路 (3) 3.2数据库设计 (4) 3.2.1 login1表的设计和数据 (4) 3.2.2 student表的设计和数据 (5) 3.2.3 course表的设计和数据 (5) 3.2.4 score表的设计和数据 (5) 3.3系统功能模块设计 (6) 四、系统详细设计 (7) 4.1登录模块 (7) 4.2 学生模块 (7) 4.3 教师模块 (7) 4.4 管理员模块 (8) 五、系统测试及运行结果 (9) 5.1 主界面 (9) 5.2 学生管理中心界面 (9) 5.3 教师管理中心界面 (10) 5.4 管理员管理中心界面 (10)

5.5 查询课表界面 (11) 5.6 查询成绩界面 (11) 5.7 查询教学情况界面 (11) 5.8 查询所有学生成绩界面 (12) 5.9 学生信息管理界面 (12) 5.10 学生成绩管理界面 (13) 5.11 用户管理界面 (13) 六、实验总结 (14) 七、参考文献 (14) 一、前言 随着计算机在人们生活中的普及和网络时代的来临,对信息的要求日益增加,学生信息管理业务受到了较为强烈的冲击,传统的手工管理方式传统的手工管理方式已不能适应现在的信息化社会。如何利用现有的先进计算机技术来解决学生信息管理成为当下的一个重要问题,学生信息管理系统是典型的信息管理系统,其开发主要就是针对前台的页面展示以及后台数据的管理。对于前者,要求应用程序功

能完备,易于使用,界面简单;而对于后者,则要求数据库具有一致性、完整性,并能够依据前台的操作来对应操作后台数据库达到一定的安全性。 本学生信息管理系统主要采用的纯JAVA代码实现图形界面系统的开发,以及数据库知识进行数据的查询,删除,插入和更新。本系统主要分为三个部分:学生模块、教师模块、管理员模块。其中学生模块实现的功能:查询课表信息和查询成绩。教师模块实现的功能:查询课表信息、查询教学情况和查询所有学生的各科成绩。管理员模块实现的功能:课表信息的管理、学生信息管理、学生成绩管理和用户信息管理。 二、需求分析 用JAVA语言实现学生信息管理系统的图形界面的编程。主要实现以下几个重要功能: ①实现三种不同身份(学生、教师、管理员)登录学生信息管理系统。(其中的数据信息保存在数据库中)

图像处理的象棋棋盘识别

基于图像处理地象棋棋盘识别 摘要:基于图像处理地象棋棋盘识别是象棋机器人软件地重要组成部分,其核心工作是棋盘图像二值化和棋子识别.针对棋盘全局二值化存在地问题,提出了基于相邻像素灰度差阈值地棋盘图像二值化方法。针对棋子文字方向任意地现象, 运用象棋文字地识别作为颜色识别异常地补充.实验结果表明,该方法提高了棋盘识别地效率. Chess- board recognition b ased on Image Processing is a n important part of a chess robot softwart system.It’s key problems arebinarization of chess- board image and character recognition.To save the problem caused by full chess- board binarization way, thebinarization method based on the difference threshold of neighbor pixels’gray- level is given. To treat the random of a character’sdirection, The character recognition was taken as the supp lement toexcep- tions of color recognition. The p roposed method imp roves the efficiency of the chessboard recognition 关键词: 棋盘识别。颜色识别;文字识别;灰度差阈值。年轮统计 Key words: chessboard recognition。 color recognition。 character recognition。threshold of gray scales’difference;annual ring statistic; 1 引言 中国象棋变化多端, 趣味无穷, 是流传了一千多年地优秀游戏, 是中华文化地精粹之一.随着机器人技术地发展, 机器人地功能越来越丰富, 娱乐机器人地研究已经成为一个重要地方向.象棋机器人是娱乐机器人地一种, 在CCD 摄像机地监视下, 使人机下棋过程非常类似于人与人之间地对弈, 更具有人性化和亲切感.本文介绍地系统是象棋机器人地视觉部分, 能识别出当前棋盘地状态, 提供给机器人下棋软件进行进一步推理. 1 .1 棋盘地预处理 棋盘识别软件地处理流程是棋盘图像地二值化、棋子检测和棋子文字识别.其中, 二值化和棋子文字识别是关键.棋盘图像二值化地目地是将棋盘背景与棋子及网格线分离, 以便进行棋子地检测和识别.目前图像二值化方法很多, 可划分为全局阈值、局部阈值法、动态阈值法.全局阈值法实现简单, 速度快, 对于具有明显双峰直方图地图像效果明显, 但对于光照不均匀地图像效果欠佳, 抗噪能力差.局部阈值法能处理较为复杂地情况, 但往往忽略了图像地边缘特征, 容易出现伪影现象, 且当窗口宽度较大时, 算法地速度将会受到很大影响.动态阈值法充分考虑了像元地邻域特征, 能够根据图像地不同背景情况自适应地改变阈值, 可较精确地提取出二值图像, 但它过渡地夸大了像元地邻域灰度地变化, 会把不均匀灰度分布地背景分割到目标中去, 带来许多不应出现地假目标. 在象棋机器人系统中装有照明灯, 为图像捕捉提供光源.即使这样, 因为光照不均匀有时所捕捉地图像仍存在一定地阴影、反光现象, 致使图像灰度层次较多.若采用全局阈值法地二值化图像, 结果出现某些背景变黑而一些棋子模糊和网格线断线地现象,这直接影响了后续地棋子和异物检测. 在象棋机器人系统中装有照明灯, 为图像捕捉提供光源.即使这样, 因为光照不均匀有时所捕捉地图像仍 存在一定地阴影、反光现象, 致使图像灰度层次较多.灰度图像如图3(a>所示.若采用全局阈值法地二值化图像, 结果出现某些背景变黑而一些棋子模糊和网格线断线地现象, 如图3(b>所示.这直接影响了后续地棋子和异物检测.

Java程序的设计实验报告

信息科学与工程学院 课程设计 题目:图书管理系统 姓名:晓雨颖 学号: 201312140115 201312140120 班级: 13级本科四班物联网 课程: Java程序设计 任课教师梦琳 2014年12月20日

课程设计任务书及成绩评定

目录 1前言 (3) 1.1设计目的 (4) 1.2设计任务 (4) 1.3运行环境 (4) 2总体设计 (5) 2.1设计原理............................................. 错误!未定义书签。3详细设计实现.. (5) 3.1 代码 (5) 3.2 登陆后事件处理 (12) 4心得体会................................................ 错误!未定义书签。

1前言 Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发容和软硬件环境等因素来选择一种合适的开发 工具。

word绘制中国象棋棋盘

word绘制中国象棋棋盘 注:本文涉及版权,不得用于商业用途,仅供参考。 用Word就可以轻松绘制出美观、实用的中国象棋棋盘。 一、设置页面 运行Word,点“文件”→“页面设置”,打开“页面设置”对话框。切换到“纸型”标签卡,在下拉列表中选择或自定义一种纸型。(选择自定义,宽度设为30厘米,高度设为33厘米,其它选项默认。 二、绘制棋盘 1.插入表格:点击“表格”→“插入表格”,打开“插入表格”对话框,因为中国象棋的棋盘从整体上看是一个9行8列的表格,所以在“列数”一栏的文本框中输入8,“行数”一栏的文本框中输入9,单击“确定”,在Word工作窗口中插入一张9行8列的表格; 2.调整大小:选中刚才插入的整张表格,单击鼠标右键,在弹出的快捷菜单中选择“表格属性”命令,打开“表格属性”对话框,将表格的行高和列宽都设置为3厘米; 3.细节处理:点击“表格”→“绘制表格”,调出“表格和边框”工具栏,利用绘制表格工具,在棋盘上下两端将、帅的活动区域画出“米”字格。选中表格的第五行,单击右键,在快捷菜单中选择“合并单元格”,将表格第五行的所有单元格合并,这样一张中国象棋棋盘的外形就绘制完成了。

三、修饰棋盘 1.设置边框:选中整张表格,单击鼠标右键,在弹出的快捷菜单选择“表格属性”命令,打开“表格属性”对话框,单击“边框和底纹”按钮,打开“边框和底纹”窗口,根据自己的喜好,对表格的边框和页面边框的线型、粗细、颜色进行设置。 2.添加文字:将光标定位到表格的第五行,输入“楚河汉界”四个字,并根据需要调整文字的字体、大小、颜色和位置。一张美观、实用的中国象棋棋盘就制作好了,只要联上打印机打印一张就行了。

JAVA简单画板程序设计实验报告

J A V A简单画板程序设计 实验报告 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

JAVA期末画板实验报告 课程题目: 运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。 设计思想: 1.进行界面设计 2.进行算法实现 3.运行调试 4.总结问题 设计过程: A.界面设计 B.新建一个Jframe容器,然后定义一个panel( Panel convas2), convas2是工具栏。用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。完成界面设计。 add(canvas2,; Panel canvas2 = new Panel(); 添加工具按键 Panel canvas2 = new Panel(); Button btn1 = new Button("直线"); Button btn2 = new Button("椭圆"); Button btn3 = new Button("矩形"); Button btn4 = new Button("清除");

Button btn5 = new Button("画笔"); Button btn6 = new Button("橡皮"); Choice choice = new Choice(); Choice choice1 = new Choice(); (choice); (choice1); (btn1); (btn2); (btn3); (btn4); (btn5); (btn6); 在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。 1.画笔的大小: ("1"); ("3"); ("5"); ("7"); ("9"); 2.画笔颜色

棋盘制作

1新建800*600像素的图象文件 2将前景色和背景色分别设置为木纹中的浅色纹路色和深色纹路色(前景色RGB为 200.120.70.背景色的RGB分别为160.45.5)。 3单击菜单命令“滤镜>杂色>添 加杂色”对话框,并按图中所示设 置参数,在图像中添加一些杂点 4单击菜单命令”滤镜>像素化>晶 格化”,打开晶格话对话框,将单元 格大小设置为10,上一步添加的 杂点被结晶为10像素大小的色块, 图像效果如图所示 5单击菜单命令”滤镜>扭曲>切变”,打开如图所示切边对话框,在对话框左上角的曲线图中拖动曲线,将其调整为图中所示的形状,并选中“折回”单选框,单击确定后,图像按照切变

曲线进行扭曲 6单击菜单命令“图像》图像大小”打开如图所示的对话框,在对话框中单击“约束比例”复选框,清楚其中的钩状符号,然后将高度设置为600像素,将图像在垂直方向上压缩为原来的一半,使木头的纹路密集一些

7单击菜单命令“编辑>预置>参考线,网格,切片”.打开如图所示的对话框,按照图中的网格参数然后单击菜单命令“视图>显示>网格”,在图像窗口中显示网格线 8在”图层”面板中建立新层,并将其命名为”棋盘格” 9在工具箱中选择铅笔工具,在工具栏中将铅笔的笔尖直径设置为2像素,将前景色设置为黑色,然后按住了shift键沿主网格线拖动鼠标,绘制棋盘格线

10在工具选项栏中将铅笔的笔尖直径设置为5像素,然后按住shift键沿主网格线外的第一条子网格线拖动鼠标,绘制棋盘外框线,绘制完毕 11在菜单中图层,打开图层样式斜面和浮雕对话框,并按照体重所示效果参数,产生凹陷

《JAVA程序设计》实验报告

福建师范大学协和学院本科实验报告 课程名称:JA V A程序设计 系别:信息技术系 专业:计算机科学与技术 班级: 学号: 姓名: 2013年

实验项目列表

《JA V A程序设计》实验相关说明 实验要求: 1.明确实验课是课程的重要组成部分,与理论课有着同等地位,是培养自身的实验技能与创新能力的重要途径; 2.在实验课前,对实验的目的、要求和基本内容,实验的重点和难点,应进行预习与讨论,确定实施措施,并编写好程序; 3.了解实验室的规章制度和安全用电常识、实验设备损坏赔偿制度等,加强安全意识,爱惜实验设备; 4.实验课期间不得擅自离开实验室或从事与本实验无关的活动,按时按质完成实验作业,培养创造性思维,努力提高自身的实践能力; 5.每次实验应提交实验结果,指导老师将结合实验操作过程给予综合评分(对于有创造性的实验成果酌情给予加分),作为期末考试成绩的一部分。 实验须知: 1.每次实验完成之后,学生须填写实验报告,并上交。报告内容包括:实验目的、实验内容、实验步骤、思路分析或流程图、程序源代码、实验中未解决的问题、屏幕出错提示代码、出错原因、解决方法及实验心得等内容。不交实验报告的学生,本次实验成绩为0分。 2.若有拷贝现象,程序代码雷同的学生实验成绩一律为0分。 3.每次实验任务必须在2-6节课内完成,并经过实验指导老师检查才能得分。没能按时完成的同学,本次实验成绩为0分。

实验一简单输入/输出项目设计 一、实验目的 1、了解Java运行环境的安装与配置; 2、了解程序的基本结构,编辑、编译与运行方法; 3、掌握方法的调用、异常的处理; 4、掌握if语句的使用和if语句的嵌套编程特点; 5、掌握switch语句的使用; 6、掌握数组与常用运算符的使用。 二、实验环境(主要仪器设备和软件) 1、操作系统Windows XP 2、JA V A开发包JSDK1.6 3、代码编辑器Jcreart3.2 4、数据库管理系统MySQL5.0 5、数据库可视化管理平台CapVideo8.0 6、JA V A开发工具MyEclipse7.0 7、微机 三、实验内容 1、开发软件的安装与配置; 2、熟悉各类软件的使用; 3、编写判断素数的小程序; 要求:从键盘输入一个整数,然后判断该数是否为素数,同时能对键盘输入的数据进行合法性验证。 4、以下内容任选一项完成: 选项一:编写星期计算器。 要求:从键盘直接输入“yyyy-MM-dd”格式的日期,并通过计算输出该日期对应的星期几。同时要对输入的日期合法性作出判断。 选项二:编写离毕业时间的倒计时器。 要求:具有X天X时X分X秒的倒计时显示功能。 选项三:编写身份证号码的合法性验证程序。 要求:能对身份证号码的省份、日期格式的合法性进行验证。

绘制中国象棋棋盘(c语言)

//编译运行环境vs2013 //作者:E蓑烟雨 //QQ:1194758555,一起交流学习。 //修改时间按:2015-05-13 #include #include int main() { initgraph(600,800);//初始化绘图环境 setorigin(300, 400);//设置原点 setbkcolor(RGB(225,160,115));//设置绘图背景色 cleardevice();//用上面背景色清空屏幕 setlinecolor(RED);//设置线条颜色 setlinestyle(PS_SOLID | PS_ENDCAP_FLAT, 4);//设置线条格式 for (int i = -280; i <= 280; i = i + 70)//画y轴负半轴平行于y轴线{ line(i, -360, i, -78); } for (int i = -360; i <= -70; i = i + 70)//画y轴负半轴平行于x轴线{ line(-280, i, 280, i); } for (int i = 0; i <= 280; i = i + 70)//画y轴正半轴平行于y轴线 { line(-280, i, 280, i); } for (int i = -280; i <= 280; i = i + 70)//画y轴正半轴平行于x轴线{ line(i, 280, i, 0); } line(-71, -360, 70, -219);//画y轴负半轴帅的位置 line(-70, -219, 70, -360); line(-70, 280, 70, 140);//画y轴正半轴将的位置 line(-70, 140, 70, 280);

象棋棋盘1

象棋棋盘 棋子活动的场所,叫作“棋盘”。在长方形的平面上,绘有九条平行的竖线和十条平行的横线相交组成,共有九十个交叉点。 棋子就摆在交叉点上。中间部分,也就是棋盘的第五,第六两横线之间末画竖线的空白地带称为“河界”。在中国象棋的棋盘中间,常有一区空隙,上写有“楚河”、“汉界”字样,这是以下棋比况历史上的“楚汉战争”。据史料记载,“楚河汉界”在古代的荥(xing)阳(属郑州)成皋一带,该地北临黄河,西依邙山,东连平原,南接嵩山,是历代兵家兴师动众的战场。公元前203年,刘邦出兵攻打楚国,项羽粮缺兵乏,被迫提出了“中分天下,割鸿沟以西为汉,以东为楚”的要求,从此就有了楚河汉界的说法。至今,在荥阳广武山上还保留有两座遥遥相对的古城遗址,西边那座叫汉王城,东边的叫霸王城,传说就是当年的刘邦、项羽所筑。两城中间,有一条宽约300米

的大沟,这就是人们平常所说的鸿沟,也是象棋盘上所标界河的依据。 两端的中间,也就是两端第四条到第六条竖线之间的正方形部位,以斜交叉线构成“米”字方格的地方,叫作“九宫”(它恰好有九个交叉点),象征着中军帐。 棋子的初始棋位 整个棋盘以“河界”分为相等的两部分。为了比赛记录和学习棋谱方便起见,现行规则

规定:按九条竖线从右至左用中文数字一至九来表示红方的每条竖线,用阿拉伯数字1只至9来表示黑方的每条竖线。己方的棋子始终使用己方的线路编号,无论棋子是否“过河”。 红方名称黑方 名称 每方 棋数 可以到达的范围 帅将 1 己方九宫内 车车 2 全盘任何位置 炮炮 2 全盘任何位置 马马 2 全盘任何位置 相象 2 己方区域内(实际上是 7个特殊棋位) 仕士 2 己方九宫内(实际上是 5个特殊棋位) 兵卒 5 起始位置及向前一步 的位置,敌方所有棋位

象棋棋盘和棋子(棋谱记录法)

棋盘和棋子 如图1,是我们非常熟悉的象棋盘,它呈长方形,由九道直线和十道横线交叉组成。棋盘上共有九十个交叉点,象棋子就摆放和活动 (图1) 在这些交叉点上。 棋盘中间没有划通直线的地方,称为“楚河汉界”,简称“河界”(相传象棋棋盘中的“楚河汉界”就在今天河南省荥阳市广武山上的鸿沟。据史料记载,从公元前205年到前202年,楚、汉两军在荥阳展开了长达四年之久的拉锯战。在空前残酷、激烈的争战中双方势均力敌,谁也无力逾越鸿沟一步。形势促使楚霸王项羽与汉王刘邦相约:以鸿沟为界,中分天下,“鸿沟而西者为汉,鸿沟而东者为楚”。历史就这样使鸿沟成了“楚河汉界”,中分天下);划有斜交叉线的地方,称为“九宫”。 九道直线,红棋方面从右到左用中文数字一至九来标识;黑棋方面从右到左用阿拉伯数字1至9来标识。有了这一套“坐标系统”,

我们就可以把对局的着法记录下来,也能够阅读棋书、棋刊上刊登的棋谱。象棋的记录方法是:每一着棋用四个字来记,第一个字是棋子的名称,如“车”或“兵”;第二个字是棋子所在直线的号码,如“一”或“2”;第三个字是棋子运动的方向,横走用“平”,向前用“进”,向后用“退”;第四个字是棋子进、退的步数,或是平走到达直线的号码。这里只能简单地介绍象棋的记录方法,如何熟练掌握,需要多加练习。 象棋的棋子共有三十二个,分为红、黑两组,每组十六个,各分 七个兵种,其名称和数目如下: 红棋子:帅一个,车、马、炮、相、士 各两个,兵五个。 黑棋子:将一个,车、马、炮、象、士 各两个,卒五个。 对局开始前,双方棋子在棋盘上的摆法 见图2。 象棋对局时,由执红棋的一方先走,双 方轮流各走一着,直至分出胜、负、和,对局即终了。(图2)双方各走一着,称为一个回合。 帅(将)每着只许走一步,前进、后退、横走都可以,但不能走出“九宫”(九宫就相当于古代皇帝的宫城)。帅和将不准在同一直线上直接对面,如一方已先占据,另一方必须回避。这里也有一个传说,同样与楚汉相争的那段历史有关:楚汉两军相持甚久,未分高下。两

Java猜拳小游戏程序设计实验报告

Java猜拳小游戏程序设计实验报告Java程序设计实验报告 班级: 学号: 姓名: 实验题目:猜拳小游戏 实验要求: 用java编写一个人机对战的猜拳小游戏。人选择性出拳,电脑随机出拳,判断 输赢,记录输赢情况。有简单的操作界面。 实验内容: 1、问题分析过程: (1)首先分析猜拳游戏本身的玩法: 人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。 (2)用面向对象的思想来分析: 在游戏过程中有几个对象组成 人 电脑 游戏规则 抽象出3个类:Person、Computer、Game Person类有哪些属性和行为呢, 属性:名字name,输赢次数(比分)score 行为:出拳ShowFirst() 选择性 Computer类有哪些属性和行为呢, 属性:名字name,输赢次数(比分)score

行为:出拳showFist() 随机 Game类有哪些属性和行为呢, 属性:游戏的双方(person、computer)、对战局数count 行为:产生角色initial()、游戏规则startGame()、显示比赛结果showResult()、统计 比赛结果calcResul() 2、主要实现代码: import java.util.*; public class StartGame { public static void main(String[]args){ Game start = new Game();//实例化游戏类 start.initial(); //调用初始化方法 start.startGame(); //调用游戏开始方法 start.showResult(); //调用游戏结果显示方法 } } import java.util.*; public class Person { String name;//名字属性 int score;//积分属性 //出拳方法 public int showFist(){ System.out.print("\n请出拳:1.剪刀2.石头3.布(输入相应数字):"); Scanner input = new Scanner(System.in);

相关主题
文本预览
相关文档 最新文档