java实现双人五子棋游戏(用java做一个五子棋小游戏)

网友投稿 351 2022-08-08


java实现双人五子棋游戏(用java做一个五子棋小游戏)

本文实例为大家分享了java实现双人五子棋游戏的具体代码,供大家参考,具体内容如下

通过 上下左右 控制棋盘走动  空格落子   (深度优先搜索)

package day_1;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class CircleRun extends JFrame {

/**

*

*/

MyPanel mp = null;

public static void main(String[] args) {

CircleRun cr = new CircleRun();

}

public CircleRun() {

mp = new MyPanel();

this.add(mp);

this.addKeyListener(mp);

this.setTitle("双人五子棋正式版3.0");

this.setSize(518, 538);// 设置窗体大小

this.setLocation(340, 50);// 设置出现的位置

this.setVisible(true);// 设置为可见

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JOptionPane.showMessageDialog(this, "双人五子棋游戏说明:通过←↑→↓控制旗子走向,空格下子先满五个子胜利", "游戏说明", JOptionPane.WARNING_MESSAGE);

}// 游戏说明

}

class Text2Frame {// 设置一个交互框

JTextField jt1 = new JTextField(); // new一个文本框

JTextArea jt2 = new JTextArea(); // new一个文本区

JTextArea jt4 = new JTextArea(); // new一个文本区

Text2Frame() {

jscrollPane jsp = new JScrollPane(jt2); // new一个滚条

String title = "正在思考。。。。";

JFrame jf = new JFrame(title);

Container container = jf.getContentPane();

// container.setBackground(Color.yellow); //容器的背景色

jf.setVisible(true); // 窗体可见

jf.setLocation(150, 50);

jf.setSize(300, 150); // 窗体大小

jf.setLayout(new BorderLayout()); // 边界布局

jf.add(BorderLayout.NORTH, jt1); // 文本框边界顶部放置

jt1.setBackground(Color.yellow);

jf.add(BorderLayout.CENTER, jt2); // 文本框边界中间放置

jf.add(BorderLayout.EAST, jt4); // 文本框边界中间放置

jt2.setBackground(Color.red);

jt2.setFont(new Font("宋体", Font.PLAIN, 30));

}

void add(String a) {

jt2.setText(a);

}

};

class Text3Frame {

JTextField jt1 = new JTextField(); // new一个文本框

JTextArea jt2 = new JTextArea(); // new一个文本区

JTextArea jt4 = new JTextArea(); // new一个文本区

Text3Frame() {

JScrollPane jsp = new JScrollPane(jt2); // new一个滚条

String title = "当前坐标";

JFrame jf = new JFrame(title);

Container container = jf.getContentPane();

// container.setBackground(Color.yellow); //容器的背景色

jf.setVisible(true); // 窗体可见

jf.setLocation(140, 180);

jf.setSize(300, 200); // 窗体大小

jf.setLayout(new BorderLayout()); // 边界布局

jf.add(BorderLayout.NORTH, jt1); // 文本框边界顶部放置

jt1.setBackground(Color.yellow);

jf.add(BorderLayout.CENTER, jt2); // 文本框边界中间放置

jf.add(BorderLayout.EAST, jt4); // 文本框边界中间放置

jt2.setBackground(Color.green);

jt2.setFont(new Font("宋体", Font.PLAIN, 30));

}

void add(String a) {

jt2.setText(a);

}

String shu(int a, int b) {

return "当前坐标(" + a + "," + b + ")";

}

};

// 定义自己的面板

class MyPanel extends JPanel implements KeyListener {

/**

*

*/

private static final long serialVersionUID = 4154597541232213984L;

Text2Frame txw = new Text2Frame();

Text3Frame txw3 = new Text3Frame();

static JFrame sc = new JFrame();

static int jishu = 1;

static int summm = 1;

static int summm2 = 1;

static int arr[][] = new int[11][12];

int x = 5;

int y = 5;

int sum = 0;

int sum2 = 0;

Node n1 = new Node(x, y);

seqlist kai = new seqlist(n1);

seqlist seq = new seqlist(null);

seqlist seq2 = new seqlist(null);

static void soushang(int a, int b) {

if (a - 1 < 1) {

return;

}

if (arr[a - 1][b] == 1 && a - 1 > 0) {

summm++;

if (summm == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "红色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

soushang(a - 1, b);

}

}

static void souxia(int a, int b) {

if (a + 1 > 10) {

return;

}

if (arr[a + 1][b] == 1 && a + 1 <= 10) {

summm++;

if (summm == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "红色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souxia(a + 1, b);

}

}

static void souzuo(int a, int b) {

if (b - 1 < 1) {

return;

}

if (arr[a][b - 1] == 1 && b - 1 >= 1) {

summm++;

if (summm == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "红色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souzuo(a, b - 1);

}

}

static void souyou(int a, int b) {

if (b + 1 > 10) {

return;

}

if (arr[a][b + 1] == 1 && b + 1 <= 10) {

summm++;

if (summm == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "红色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souyou(a, b + 1);

}

}

static void soushangzuo(int a, int b) {

if (a - 1 < 1 || b - 1 < 1) {

return;

}

if (arr[a - 1][b - 1] == 1 && (a - 1 > 0) && (b - 1) > 0) {

summm++;

if (summm == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "红色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

soushangzuo(a - 1, b - 1);

}

}

static void souxiazuo(int a, int b) {

if (a + 1 > 10 || b - 1 < 1) {

return;

}

if (arr[a + 1][b - 1] == 1 && (a + 1 <= 10) && (b - 1) >= 1) {

summm++;

if (summm == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "红色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souxiazuo(a + 1, b - 1);

}

}

static void souyoushang(int a, int b) {

if (a - 1 < 1 && b + 1 > 10) {

return;

}

if (arr[a - 1][b + 1] == 1 && a - 1 >= 1 && b + 1 <= 10) {

summm++;

if (summm == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "红色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souyoushang(a - 1, b + 1);

}

}

static void souyouxia(int a, int b) {

if (b + 1 > 10 && a + 1 > 10) {

http:// return;

}

if (arr[a + 1][b + 1] == 1 && b + 1 <= 10 && a + 1 <= 10) {

summm++;

if (summm == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "红色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souyouxia(a + 1, b + 1);

}

}

static void soushang2(int a, int b) {

if (a - 1 < 1) {

return;

}

if (arr[a - 1][b] == 2 && a - 1 > 0) {

summm2++;

if (summm2 == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "绿色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

soushang2(a - 1, b);

}

}

static void souxia2(int a, int b) {

if (a + 1 > 10) {

return;

}

if (arr[a + 1][b] == 2 && a + 1 <= 10) {

summm2++;

if (summm2 == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "绿色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souxia2(a + 1, b);

}

}

static void souzuo2(int a, int b) {

if (b - 1 > 10) {

return;

}

if (arr[a][b - 1] == 2 && b - 1 >= 1) {

summm2++;

if (summm2 == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "绿色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souzuo2(a, b - 1);

}

}

static void souyou2(int a, int b) {

if (b + 1 > 10) {

return;

}

if (arr[a][b + 1] == 2 && b + 1 <= 10) {

summm2++;

if (summm2 == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "绿色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souyou2(a, b + 1);

}

}

static void soushangzuo2(int a, int b) {

if (a - 1 < 1 || b - 1 < 1) {

return;

}

if (arr[a - 1][b - 1] == 2 && (a - 1 >= 1) && (b - 1) >= 1) {

summm2++;

if (summm2 == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "绿色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

soushangzuo2(a - 1, b - 1);

}

}

static void souxiazuo2(int a, int b) {

if (a + 1 > 10 || b - 1 < 1) {

return;

}

if (arr[a + 1][b - 1] == 2 && (a + 1 <= 10) && (b - 1) >= 1) {

summm2++;

if (summm2 == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "绿色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souxiazuo2(a + 1, b - 1);

}

}

static void souyoushang2(int a, int b) {

if (a - 1 < 1 && b + 1 > 10) {

return;

}

if (arr[a - 1][b + 1] == 2 && a - 1 >= 1 && b + 1 <= 10) {

summm2++;

if (summm2 == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "绿色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souyoushang2(a - 1, b + 1);

}

}

static void souyouxia2(int a, int b) {

if (b + 1 > 10 && a + 1 > 10) {

return;

}

if (arr[a + 1][b + 1] == 2 && b + 1 <= 10 && a + 1 <= 10) {

summm2++;

if (summm2 == 5) {

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

for (int k = 0; k < 12; k++) {

arr[i][k] = 0;

}

}

System.out.println("胜利");

JOptionPane.showMessageDialog(sc, "绿色方胜利,点击确定重新开始", "结果", JOptionPane.WARNING_MESSAGE);

}

souyouxia2(a + 1, b + 1);

}

}

public void paint(Graphics g) {

if (jishu % 2 == 1) {

String aaa = "红方开始下棋";

txw.add(aaa);

} else {

String aaa = "绿方开始下棋";

txw.add(aaa);

}

txw3.add(txw3.shu(x, y));

super.paint(g);

for (int i = 1; i <= 10; i++) {

for (int k = 1; k <= 10; k++) {

g.fillOval((i - 1) * 50, (k - 1) * 50, 50, 50);

}

}

Color c = g.getColor();

g.fillOval(x * 50, y * 50, 50, 50);

Node now = seq.head;

Node tou = kai.head;

Color u = g.gethttp://Color();

if (jishu % 2 == 1) {

g.setColor(Color.red);

g.fillOval((tou.a - 1) * 50, (tou.b - 1) * 50, 50, 50);

g.setColor(u);

} else {

g.setColor(Color.green);

g.fillOval((tou.a - 1) * 50, (tou.b - 1) * 50, 50, 50);

g.setColor(u);

}

while (now != null) {

System.out.print("(" + now.a + " " + now.b + ")");

Color r = g.getColor();

g.setColor(Color.red);

g.fillOval((now.a - 1) * 50, (now.b - 1) * 50, 50, 50);

g.setColor(r);

now = now.next;

}

Node now2 = seq2.head;

while (now2 != null) {

System.out.print("(" + now2.a + " " + now2.b + ")");

Color r = g.getColor();

g.setColor(Color.green);

g.fillOval((now2.a - 1) * 50, (now2.b - 1) * 50, 50, 50);

g.setColor(r);

now2 = now2.next;

}

System.out.println();

}

// 键的一个值被输出

@Override

public void keyTyped(KeyEvent e) {

}

// 键被按下

@Override

public void keyPressed(KeyEvent e) {

System.out.print("线性表为");

System.out.println();

// System.out.println("键被按下"+e.getKeyCode());

if (e.getKeyCode() == KeyEvent.VK_DOWN) {

// System.out.println("12");

y = y + 1;

if (y >= 11) {

y = y % 11 + 1;

}

} else if (e.getKeyCode() == KeyEvent.VK_UP) {

y = y - 1;

if (y < 1) {

y = y + 10;

}

} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {

x = x - 1;

if (x < 1) {

x = x + 10;

}

} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {

x = x + 1;

if (x >= 11) {

x = x % 11 + 1;

}

} else if (e.getKeyCode() == KeyEvent.VK_SPACE) {

int luo1 = x;

int luo2 = y;

Node n2 = new Node(luo1, luo2);

if (jishu % 2 != 0) {

Node now3 = seq2.head;

Node now2 = seq.head;

int aaa = 1;

if (arr[x][y] == 1 || arr[x][y] == 2) {

JOptionPane.showMessageDialog(sc, "此处已有棋子,请下别处", "错误", JOptionPane.WARNING_MESSAGE);

aaa = 2;

}

if (aaa == 1) {

jishu++;

seq.add(n2);

arr[luo1][luo2] = 1;

seq.tostring();

System.out.println("摁下空格");

soushang(x, y);

System.out.println("sum1" + " " + summm);

if (summm == 5) {

seq.head = null;

seq2.head = null;

}

souxia(x, y);

System.out.println("sum2" + " " + summm);

if (summm == 5) {

seq.head = null;

seq2.head = null;

}

summm = 1;

souzuo(x, y);

System.out.println("sum3" + " " + summm);

if (summm == 5) {

seq.head = null;

seq2.head = null;

}

souyou(x, y);

System.out.println("sum4" + " " + summm);

if (summm == 5) {

seq.head = null;

seq2.head = null;

}

summm = 1;

soushangzuo(x, y);

System.out.println("sum5" + " " + summm);

if (summm == 5) {

seq.head = null;

seq2.head = null;

}

souyouxia(x, y);

System.out.println("sum6" + " " + summm);

if (summm == 5) {

seq.head = null;

seq2.head = null;

}

summm = 1;

souyoushang(x, y);

System.out.println("sum7" + " " + summm);

if (summm == 5) {

seq.head = null;

seq2.head = null;

}

souxiazuo(x, y);

if (summm == 5) {

seq.head = null;

seq2.head = null;

}

summm = 1;

}

} else {

int aaa = 1;

if (arr[x][y] == 1 || arr[x][y] == 2) {

JOptionPane.showMessageDialog(sc, "此处已有棋子,请下别处", "错误", JOptionPane.WARNING_MESSAGE);

aaa = 2;

}

if (aaa == 1) {

jishu++;

seq2.add(n2);

arr[luo1][luo2] = 2;

seq2.tostring();

System.out.println("摁下空格");

soushang2(x, y);

System.out.println("sum1" + " " + summm);

if (summm2 == 5) {

seq.head = null;

seq2.head = null;

}

souxia2(x, y);

System.out.println("sum2" + " " + summm);

if (summm2 == 5) {

seq.head = null;

seq2.head = null;

}

summm2 = 1;

souzuo2(x, y);

System.out.println("sum3" + " " + summm);

if (summm2 == 5) {

seq.head = null;

seq2.head = null;

}

souyou2(x, y);

System.out.println("sum4" + " " + summm);

if (summm2 == 5) {

seq.head = null;

seq2.head = null;

}

summm2 = 1;

soushangzuo2(x, y);

System.out.println("sum5" + " " + summm);

if (summm2 == 5) {

seq.head = null;

seq2.head = null;

}

souyouxia2(x, y);

System.out.println("sum6" + " " + summm);

if (summm2 == 5) {

seq.head = null;

seq2.head = null;

}

summm2 = 1;

souyoushang2(x, y);

System.out.println("sum7" + " " + summm);

if (summm2 == 5) {

seq.head = null;

seq2.head = null;

}

souxiazuo2(x, y);

if (summm2 == 5) {

seq.head = null;

seq2.head = null;

}

summm2 = 1;

}

}

for (int i = 1; i <= 10; i++) {

for (int k = 1; k <= 10; k++) {

System.out.print(arr[i][k] + " ");

}

System.out.println();

}

}

kai.huan(x, y);

// 调用repaint()函数,来重绘界面

this.repaint();

}

class Node {// 设置 节点类

int a;

int b;

Node next;

Node(int a, int b) {

this.a = a;

this.b = b;

this.next = null;

}

}

class seqlist {// 设置链表类

Node head;

Node tail;

int n = 0;

public seqlist(Node head) {

// TODO Auto-generated constructor stub

this.head = head;

this.tail = head;

n++;

}

void add(Node p) {

Node now = head;

p.next = now;

head = p;

n++;

}

void tostring() {

Node now = head;

System.out.print("线性表为");

while (now != null) {

System.out.print(now.a + ",");

now = now.next;

}

System.out.println();

}

int length() {

return n;

}

void insert(int a, Node b) {

Node now1 = head;

for (int i = 0; i < a - 1; i++) {

now1 = now1.next;

}

b.next = now1.next;

now1.next = b;

n++;

}

void delete(int a) {

Node now1 = head;

for (int i = 0; i < a - 1; i++) {

now1 = now1.next;

}

now1.next = now1.next.next;

n--;

}

int geta(int n) {

Node now1 = head;

for (int i = 0; i < n - 1; i++) {

now1 = now1.next;

}

return now1.a;

}

void huan(int a, int b) {

head.a = a;

head.b = b;

}

int getb(int n) {

Node now1 = head;

for (int i = 0; i < n - 1; i++) {

now1 = now1.next;

}

return now1.b;

}

}

// 键被释放

@Override

public void keyReleased(KeyEvent e) {

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring如何按业务模块输出日志到不同的文件详解(springboot配置日志输出到文件)
下一篇:SpringBoot使用AOP统一日志管理的方法详解(aop实现日志管理)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~