正文
java井字棋源代码 js井字棋
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
谁能帮我用java编一个井字棋~~救命~~我把全部的分都给他了
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class NinePannel extends JFrame{
public NinePannel(){
this.setSize(320,340);
this.setLayout(new GridLayout(3,3));
for(int i=0;i9;i++){
this.add(new MyPanel());
}
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
class MyPanel extends JPanel{
int i=-1;
public MyPanel(){
this.setSize(100,100);
this.addMouseListener(new MyListener(this));
}
public void paint(Graphics arg0) {
super.paint(arg0);
arg0.drawRect(0, 0, 100, 100);
if(i!=-1){
if(i%2==0){
arg0.drawOval(0, 0, 100, 100);
}else{
arg0.drawLine(0, 0, 100, 100);
arg0.drawLine(100, 0, 0, 100);
}
}
i++;
}
class MyListener extends MouseAdapter{
MyPanel myPanel;
public MyListener(MyPanel myPanel){
this.myPanel = myPanel;
}
public void mousePressed(MouseEvent arg0) {
myPanel.repaint();
}
}
}
public static void main(String[] args){
new NinePannel();
}
}
关于java里applet的问题
applet可以调用另一个和。
一个简单例子
//Applet-同一页面的两applet通信.txt
1、第一个Applet
//: Applet1.java
// Very simple applet
package xjtu.citi;
import java.awt.*;
import java.applet.*;
public class Applet1 extends Applet {
public void paint(Graphics g) {
g.drawString("First applet,What can I do?", 20, 30);
//获得同一页面的applet
Applet2 theOtherApplet =(Applet2)getAppletContext().getApplet("app2");
//使用另一个applet的方法
g.drawString(theOtherApplet.whatidoallforyou(),20,60);
//获得同一页面的所有applet
Enumeration allAppletsOnSamePage = getAppletContext().getApplets();
while(allAppletsOnSamePage.hasMoreElements()) {
Applet appl = (Applet) allAppletsOnSamePage.nextElement();
appl.paint(g); //调用任一个公用方法
}
}
} ///:~
2、第二个Applet
//: Applet2.java
// Easy graphics
package xjtu.citi;
import java.awt.*;
import java.applet.*;
public class Applet2 extends Applet {
public void paint(Graphics g) {
g.drawString("Second applet", 10, 15);
g.draw3DRect(0, 0, 100, 20, false);
}
public String whatidoallforyou(){
return "what I do all for you,zly";
}
} ///:~
3、Html文件:twoapplets.html
html
applet codebase = "." code="xjtu.citi.Applet2" width="400" height="200" name="app2"
/applet
br
applet codebase = "." code="xjtu.citi.Applet1" width="400" height="200" name="app1"
/applet
br
/html
Java 用二维数组编程 井字棋问题求助!
int a[][]=new int[3][3];
for (int i = 0; i a.length; i++) {
for (int j = 0; j a.length; j++) {
a[i][j]=(int)(Math.random()*2);
}
}
int x=0;
for (int i = 0; i a.length; i++) {
for (int j = 0; j a.length; j++) {
x++;
System.out.print(a[i][j]+" ");
if(x%3==0)
System.out.println();
}
}
判断的话if(a[0][0]==a[0][2]==a[0][1])等等都写上就行了
用Java做井字棋游戏
以前写过一个javajava井字棋源代码的井字棋 ,
其中java井字棋源代码的重点是要判断每走一步后,是否有比赛java井字棋源代码的结果(输,赢,平)
可以使用swing 来作为外观进行显示.
表示棋盘如下
0 1 2
3 4 5
6 7 8
定义一个二维数组,每次走完后,匹配该数组, 如果匹配成功就赢java井字棋源代码了
int[][] WIN = { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 }, { 0, 3, 6 }, { 1, 4, 7 }, { 2, 5, 8 }, { 0, 4, 8 },
{ 2, 4, 6 } };
效果图
当然java井字棋源代码了,因为井字棋比较简单, 可以写一个比较简单的判断局势,然后自动下棋的AI .
(AI使用了很多的if else判断, 比如人现在的情况是什么样的,有几个棋子连在一起了,电脑自己的情况是怎么样的)
java 编写井字棋
我说下我的想法:
看坐标: 横坐标一致
或纵坐标一致
还有就是/.\两种情况下 固定的位置你事先固定好
当三个点都有了棋子就一直线
急求井字游戏的编程源代码(MFC格式)
“井字棋”游戏(又叫“三子棋”),是一款十分经典的益智小游戏,想必很多玩家都有玩过。“井字棋”的棋盘很简单,是一个3×3的格子,很像中国文字中的“井”字,所以得名“井字棋”。“井字棋”游戏的规则与“五子棋”十分类似,“五子棋”的规则是一方首先五子连成一线就胜利;“井字棋”是一方首先三子连成一线就胜利。
井字棋(英文名Tic-Tac-Toe)
井字棋的出现年代估计已不可考,西方人认为这是由古罗马人发明的;但我们中国人认为,既然咱们都发明了围棋、五子棋,那发明个把井字棋自然是不在话下。这些纯粹是口舌之争了,暂且不提。
想起小时候上课喜欢玩井字棋,只要一张草稿纸、一支笔、同桌两人就可以玩了。上体育课,也可以拿着树枝在沙坑里玩。但一直感觉这游戏太简单了,后来接触了五子棋,着迷了一阵,但水平总是很差,便也不玩了。
一字棋游戏极小极大分析法
设有九个空格,由MAX,MIN二人对弈,轮到谁走棋谁就往空格上放一只自己的棋子,谁先使自己的棋子构成“三子成一线”(同一行或列或对角线全是某人的棋子),谁就取得了胜利。
用叉号表示MAX,用圆圈代表MIN。
比如右图中就是MIN取胜的棋局。
为了不致于生成太大的博弈树,假设每次仅扩展两层。估价函数定义如下:
设棋局为P,估价函数为e(P)。
(1) 若P对任何一方来说都不是获胜的位置,则e(P)=e(那些仍为MAX空着的完全的行、列或对角线的总数)-e(那些仍为MIN空着的完全的行、列或对角线的总数)
(2) 若P是MAX必胜的棋局,则e(P)=+∞。
(3) 若P是B必胜的棋局,则e(P)=-∞。
比如P如右图示,则e(P)=6-4=2
要注意利用棋盘位置的对称性,在生成后继节点的位置时,下列博弈结局
都是相同的棋局(在博弈中,一宇棋的分枝系数比较小起初是由于对称性,而后是由于棋盘上未布子的空格减少所致)。图3.15画出了经过两层搜索生成的博弈树,静态估值记在端节点下面,倒推值记在圆圈内。
由于右图所示位置具有最大的倒推值,它应当选取为MAX的第一步(正好是MAX的最好的优先走步)。
现在我们假设MAX走了这一步,而MIN的回步是直接在X上方的空格里放上一个圆圈(对MAX来说这是一步坏棋,他一定没有采用好的搜索策略)。下一步,MAX又在新的格局下搜索两层,产生如图3.16所示的搜索图。
现在图中MAX有两个可能“最好的”优先走步,假设MAX走了图上指明的那一步。而MIN为了避免立即败北被迫走了另一步,从而产生如下棋局:MAX再次搜索,产生如图3.17所示的树。
在这棵树中某些端节点(例如其中一个标记着A)代表MIN获胜,因此它们的估值为—∞。当这些估值被倒推回去时,可看到MAX的最好的也是唯一能使他避免立即失败的一个走步。现在,MIN可以看出MAX必然在他的下一走步中获胜,因此,MIN只好认输。
按极大极小算法编程下一字棋的演示(右图,可以点击操作)...
我们就利用Visual Basic编写一个“井字棋”的小游戏。
【设计思路】
首先,我们要知道,“井字棋”游戏是一款典型的棋类游戏,游戏时一方式是电脑,另一方是玩家。所以,这类游戏在开始时有两种方式:一种是玩家先走;另一种是电脑先走。这是我们要考虑的第一个问题。
其次,由于与玩家对战的是计算机,所以我们要编写一个过程(Chuqi),它可以使程序模拟人的思维与人下棋(其实就是“人工智能”的体现),这个Chuqi过程也是本游戏软件的关键。此外,我们还要编写两个过程(Lianxian和Shuying),Lianxian过程用来时刻判断棋盘中是否有三个棋子连成一线;Shuying过程用来判断如果有三个棋子连成一线,是哪一方连成一线的,即判断哪一方获胜。
以上几个问题就是该“井字棋”游戏实现的关键思路。....
关于java井字棋源代码和js井字棋的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。