java课设_Java 课设

java课设_Java 课设展开全部简单的五子棋程序新建一个chess类,其中代码如下packagework;importjava.awt.Color;publicclassChess{publicstaticfinalintdiamter=30;privateintx;//在网格中的索引,0~e68a84e8a2ad62616964757a686964616f3133323865663715priva…

大家好,又见面了,我是你们的朋友全栈君。

展开全部

简单的五子棋程序

新建一个chess类,其中代码如下

package work;

import java.awt.Color;

public class Chess {

public static final int diamter=30;

private int x;//在网格中的索引,0~e68a84e8a2ad62616964757a686964616f3133323865663715

private int y;//在网格中的索引,0~15

private Color color;

public Color getColor() {

return color;

}

public void setColor(Color color) {

this.color = color;

}

public int getX() {

return x;

}

public void setX(int x) {

this.x = x;

}

public int getY() {

return y;

}

public void setY(int y) {

this.y = y;

}

public Chess(int x, int y, Color color) {

super();

this.x = x;

this.y = y;

this.color = color;

}

}

然后在同一个包中新建FirstFrame类。代码如下

package work;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

//主函数

public class FirstFrame{

public static void main(String[] args) {

FirstFrame1 f=new FirstFrame1();

f.setVisible(true);

}

}

//窗体函数

class FirstFrame1 extends JFrame implements ActionListener{

JMenuBar menuBar;

JMenu sysMenu;

JMenuItem startMenuItem;

JMenuItem backMenuItem;

JMenuItem exitMenuItem;

DrawPanel myPanel=new DrawPanel();

public FirstFrame1(){

super(“娃哈哈”);

add(myPanel);

menuBar=new JMenuBar();

setJMenuBar(menuBar);

sysMenu=new JMenu(“系统(s)”);

sysMenu.setMnemonic(‘s’);

menuBar.add(sysMenu);

startMenuItem=new JMenuItem(“开始”);

backMenuItem=new JMenuItem(“悔棋”);

exitMenuItem=new JMenuItem(“退出”);

sysMenu.add(startMenuItem);

sysMenu.add(backMenuItem);

sysMenu.addSeparator();

sysMenu.add(exitMenuItem);

startMenuItem.addActionListener(this);

backMenuItem.addActionListener(this);

exitMenuItem.addActionListener(this);

super.setSize(600,650);

super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void actionPerformed(ActionEvent e){

Object obj=e.getSource();

if(obj==startMenuItem){

myPanel.start(); //DrawPanel p=new DrawPanel();是错的;

}else if(obj==backMenuItem){

myPanel.back();

}else{

System.exit(0);

}

}

}

最后新建一个DrawPanel类代码如下

package work;

import java.awt.Color;

import java.awt.Cursor;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import sun.awt.geom.AreaOp.AddOp;

//画柄;

class DrawPanel extends JPanel implements MouseListener,MouseMotionListener{

final int MARGIN_TOP=60;

final int MARGIN_LEFT=30;

final int CELL_WIDTH=35;

final int COLS=15;

final int ROWS=15;

Chess[] chessList=new Chess[(COLS+1)*(ROWS+1)];

int chessCount=0;

boolean isBlack=true;

boolean gameOver=false;

public DrawPanel(){ //构造函数

Color color=new Color(200,250,200);

setBackground(color);

this.addMouseMotionListener(this);

this.addMouseListener(this);

}

public void start(){

for(int i=0;i

chessList[i]=null;

isBlack=true;

gameOver=false;

chessCount=0;

repaint();

}

public void back(){

if (chessCount==0||gameOver==true)

return;

chessList[chessCount-1]=null;

chessCount–;

isBlack=!isBlack;

repaint();

}

@Override

protected void paintComponent(Graphics g) { //方法重写

// TODO Auto-generated method stub

super.paintComponent(g);

for(int i=0;i<=ROWS;i++){

g.drawLine(MARGIN_LEFT, MARGIN_TOP+i*CELL_WIDTH, MARGIN_LEFT+COLS*CELL_WIDTH, MARGIN_TOP+i*CELL_WIDTH);

}

for(int i=0;i<=COLS;i++){

g.drawLine(MARGIN_LEFT+i*CELL_WIDTH, MARGIN_TOP, MARGIN_LEFT+i*CELL_WIDTH, MARGIN_TOP+ROWS*CELL_WIDTH);

}

for(int i=0;i

Chess chess=chessList[i];

int xPos=MARGIN_LEFT+CELL_WIDTH*chess.getX()-Chess.diamter/2;

int yPos=MARGIN_TOP+CELL_WIDTH*chess.getY()-Chess.diamter/2;

g.setColor(chess.getColor());

g.fillOval(xPos,yPos, Chess.diamter, Chess.diamter);

if(i==chessCount-1){

g.setColor(Color.red);

g.drawRect(xPos, yPos, Chess.diamter, Chess.diamter);

}

}

if(isBlack)

g.setColor(Color.black);

else

g.setColor(Color.white);

g.fillOval(8*CELL_WIDTH, CELL_WIDTH/2,Chess.diamter, Chess.diamter);

String colorStr=isBlack==false?”白方下”:”黑方下”;

g.setColor(Color.blue);

g.drawString(colorStr+” 第”+chessCount/2+”步”, 9*CELL_WIDTH, CELL_WIDTH);

}

public void mouseClicked(MouseEvent e) {}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

public void mouseDragged(MouseEvent e) {}

public void mouseMoved(MouseEvent e) {

// TODO Auto-generated method stub

super.setCursor(new Cursor(Cursor.HAND_CURSOR));

int x=(e.getX()-MARGIN_LEFT+Chess.diamter/2)/CELL_WIDTH;

int y=(e.getY()-MARGIN_TOP+Chess.diamter/2)/CELL_WIDTH;

if(x<0||y<0||x>COLS||y>ROWS) //超出棋盘边界

super.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

if(findChess(x,y)) //下过的地方不能再下

super.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

if(gameOver)

super.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

}

public void mousePressed(MouseEvent e) {

int x=(e.getX()-MARGIN_LEFT+Chess.diamter/2)/CELL_WIDTH;

int y=(e.getY()-MARGIN_TOP+Chess.diamter/2)/CELL_WIDTH;

if(x<0||y<0||x>COLS||y>ROWS) //超出棋盘边界

return;

Color color=Color.black;

if(!isBlack) // 变颜色

color=Color.white;

if(findChess(x,y)) //下过的地方不能再下

return;

if(gameOver)

return;

chessList[chessCount]=new Chess(x,y,color);

repaint(); //重绘

isBlack=!isBlack;

chessCount++;

String colorStr=color==Color.white?”白方”:”黑方”;

int[] count={0,0,0,0};

for(int i=x-1;i>=0;i–){

if(findChess(i,y,color)){

count[0]++;

}

else

break;

}

for(int i=x+1;i<=COLS;i++){

if(findChess(i,y,color)){

count[0]++;

}

else

break;

}

for(int i=y-1;i>=0;i–){

if(findChess(x,i,color)){

count[1]++;

}

else

break;

}

for(int i=y+1;i<=ROWS;i++){

if(findChess(x,i,color)){

count[2]++;

}

else

break;

}

for(int i=x+1,j=y+1;i<=COLS&&j<=ROWS;i++,j++){

if(findChess(i,j,color)){

count[3]++;

}

else

break;

}

for(int i=x-1,j=y-1;i>=0&&j>=0;i–,j–){

if(findChess(i,j,color)){

count[3]++;

}

else

break;

}

for(int i=x+1,j=y-1;i<=COLS&&j>=0;i++,j–){

if(findChess(i,j,color)){

count[3]++;

}

else

break;

}

for(int i=x-1,j=y+1;i>=0&&j<=ROWS;i–,j++){

if(findChess(i,j,color)){

count[3]++;

}

else

break;

}

for(int i=0;i<4;i++){

if(count[i]>=4){

gameOver=true;

JOptionPane.showMessageDialog(this, “恭喜”+colorStr+”胜利”);

return;

}

}

System.out.println(e.getX()+”,”+e.getY());

}

public boolean findChess(int x,int y){

for(int i=0;i

if(chessList[i].getX()==x && chessList[i].getY()==y)

return true;

}

return false;

}

public boolean findChess(int x,int y,Color color){

for(int i=0;i

if(chessList[i].getX()==x && chessList[i].getY()==y && chessList[i].getColor()==color)

return true;

}

return false;

}

}

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158059.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 智能营销增益模型(Uplift Modeling)的原理与实践

    智能营销增益模型(Uplift Modeling)的原理与实践文章目录增益模型因果与推论(CausalInference)增益模型的表示差分响应模型(Two-ModelApproach)模型优缺点差分响应模型升级版(One-ModelApproach)ClassTransformationMethodClassTransformation的两个假设ModelingUpliftDirectly增益模型的评估uplift柱状图Qini曲线(Qi…

    2025年8月22日
    4
  • 数仓数据分层(ODS DWD DWS ADS)换个角度看

    数仓数据分层(ODS DWD DWS ADS)换个角度看数仓数据分层简介1.背景数仓是什么,其实就是存储数据,体现历史变化的一个数据仓库.因为互联网时代到来,基于数据量的大小,分为了传统数仓和现代数仓.传统数仓,使用传统的关系型数据库进行数据存储,因为关系型数据库本身可以使用SQL以及函数等做数据分析.所以把数据存储和数据分析功能集合为一体,加上一个可视化界面,就能从数据存储,数据分析,数据展示完整方案.到了互联网时代,由于上网用户剧增,特别是移动互联网时代,海量的网络设备,导致了海量的数据产生,企业需要也希望从这些海量数据中挖掘有效信息,如行为

    2022年6月26日
    76
  • Python学习笔记(3):运算符与表达式[通俗易懂]

    Python学习笔记(3):运算符与表达式[通俗易懂]1.运算符运算符名称说明例子+加两个对象相加3+5得到8。"a"+"b"得到"ab"。-减得到负数或是一个数减去另一个数-5.2得

    2022年7月5日
    240
  • eclipse导入maven工程没有src/main/resources文件夹

    eclipse导入maven工程没有src/main/resources文件夹很多时候导入maven工程的时候没有src/main/resources文件夹今天写个博客记录下如何解决首先右击项目然后如图所示然后点击ok再应用然后就先显示资源文件夹了…

    2022年5月31日
    37
  • particles.js使用及配置

    particles.js使用及配置particles.js使用及配置参考:http://blog.csdn.net/csdn_yudong/article/details/53128570这个项目中有提供demo,可以直接下载这个

    2022年8月5日
    6
  • 关系数据库的范式理论_数据库规范化理论依据

    关系数据库的范式理论_数据库规范化理论依据文章目录求关系模式最高达到第几范式的步骤通俗理解1NF,2NF,3NF.如何求关系模式的候选码如何求闭包函数依赖求关系模式最高达到第几范式的步骤根据给定的U和F,首先求它的候选码根据候选码判断关系F中的函数关系是否满足第二范式,若不满足则为关系模式的规范化最高为第一范式然后判断是否存在非主属性传递依赖,如果存在则不满足第二范式,如果不存在则关系模式的规范化最高为第三范式.通俗理解1N…

    2022年10月16日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号