📄 weiqi.txt
字号:
/*
<%
str="c:\000\login.txt"
Set MyFileObject=Server.CreateObject("Scripting.FileSystemObject")
Set MyTextFile=MyFileObject.OpenTextFile("c:\000\login.txt", 8, TRUE)
'记录用户时间
MyTextFile.Write("访问时间:"&date&";"&time&" JavaWQ0 来宾地址 ")
'记录用户的IP地址:
MyTextFile.WriteLine(Request.ServerVariables("REMOTE_ADDR"))
'MyTextFile.Close
%>
<TITLE>Java语言(二):围棋的Java程序设计分析</title>
<pre>
围棋的Java程序设计分析
*/
import java.applet.*;
import java.lang.*;
import java.awt.*;
class Go extends Frame {
//全局(类)变量*
static int QP[][]; //围棋棋盘完全状态数组;
static int times; // 步数;
static Graphics gg; //窗口画笔;
static int i,j;
static void CSH(){//初始化棋盘
QP=new int[21][21]; //棋盘数组
for(i=0;i<21;i++){ //初始化棋盘边部
for(j=0;j<21;j++){
QP[i][j]=100;}//end for
}//end for
for(i=1;i<20;i++){ //初始化棋盘内部
for(j=1;j<20;j++){
QP[i][j]=0;}//end for
}//end for
}// end CSH();
static void HAQP(){//画棋盘
for(i=0;i<19;i++){gg.drawLine(20+20,40+20+i*20,19*20+20,20+i*20+40);}
for(i=0;i<19;i++){gg.drawLine(20+20+i*20,20+40,20+i*20+20,20*19+40);}
///////////// Draw Little Stars //////
gg.setColor(Color.black);
for(i=0;i<3;i++)
for(j=0;j<3;j++){
gg.fillOval(100+120*i-4,120+120*j-4,8,8);
}
// 在棋盘上画出当前已放的棋子
for (i=1; i <20; i++) {
for (j=1; j <20; j++) {
if(QP[i][j]==-1){ // 奇数为白
gg.setColor(Color.white); //设置当前颜色为白*
gg.fillOval(i*20+20-10, j*20+40-10, 20, 20); // 用当前颜色画出棋子
}//end if
if(QP[i][j]==1){ // 偶数为黑
gg.setColor(Color.black); //设置当前颜色为黑*
gg.fillOval(i*20+20-10, j*20+40-10, 20, 20); // 用当前颜色画出棋子
}//end if
}//end for
}//end for
}
public Go() {//类Go的构造函数Go();
super("围棋提子算法演示");
setLayout(null);
addNotify();
resize(460,480); //窗口大小;
setBackground(Color.gray); //背景色
gg=getGraphics(); //画笔;
CSH(); //初始化棋盘
times=0; //落子次数
gg.setColor(Color.black);
repaint();
}
public boolean handleEvent(Event event) {
if (event.id == Event.WINDOW_DESTROY) { hide(); return true;}
return super.handleEvent(event);
}
public void paint(Graphics g){ //画棋盘,缺省色:黑;
gg.setColor(Color.black);
HAQP(); //画当前棋盘状态数组下的棋盘;
}
public boolean mouseDown(Event e, int x, int y) {
if(x<30||x>410||y<50||y>430)return true;//若鼠标点击在棋盘外,重来;
else {times++;DrawStone(x,y);}//DrawStone(x,y,times);}
return true;
}//End MouseDown
static void DrawStone(int x,int y){//画落子后的棋子
int a,b;
if(x % 20 > 10)a=x-x%20+20; else a=x-x%20;
if(y % 20 > 10)b=y-y%20+20; else b=y-y%20;
if(QP[a/20-1][b/20-2]==0){
if(times%2==1){gg.setColor(Color.black);QP[a/20-1][b/20-2]=1;}
else {gg.setColor(Color.white);QP[a/20-1][b/20-2]=-1;}
gg.fillOval(a-10, b-10, 20, 20);
if(times%2==1)CountStone((a/20-1),(b/20-2),1);
else CountStone((a/20-1),(b/20-2),-1);
}
else times--;
}
////////// 计算是否提子 ////////////////
static int CountStone(int x,int y,int StoneColor){//This x and y is used as Array[]i and j.
int a=0,b=0,top=0;
int i=0,j=0;
if((QP[x-1][y]!=-StoneColor)&&(QP[x+1][y]!=-StoneColor)
&&(QP[x][y+1]!=-StoneColor)&&(QP[x][y-1]!=-StoneColor))
return 0;
else{
if(QP[x-1][y]==-StoneColor){
FunCount(x-1,y,StoneColor);}
if(QP[x+1][y]==-StoneColor){
FunCount(x+1,y,StoneColor);}
if(QP[x][y-1]==-StoneColor){
FunCount(x,y-1,StoneColor);}
if(QP[x][y+1]==-StoneColor){
FunCount(x,y+1,StoneColor);}
return 1;
}//End Else
}//End MoveOutStone
static void FunCount(int x,int y,int StoneColor){//向一个方向计算提子
int a=0,b=0;
int i=0,j=0;
int top=0;
int PointX[],PointY[];
PointX=new int[150];
PointY=new int[150];
top++;PointX[top]=x;PointY[top]=y;
while(top>0){
a=PointX[top];b=PointY[top];top--;
QP[a][b]=50;
if(QP[a-1][b]==0||QP[a+1][b]==0||
QP[a][b+1]==0||QP[a][b-1]==0){
for(i=1;i<=19;i++)
for(j=1;j<=19;j++)
if(QP[i][j]==50) QP[i][j]=-StoneColor;
top=0;
}
else{
if(QP[a][b+1]==-StoneColor){top++;
PointX[top]=a;PointY[top]=b+1;
}
if(QP[a][b-1]==-StoneColor){top++;
PointX[top]=a;PointY[top]=b-1;
}
if(QP[a+1][b]==-StoneColor){top++;
PointX[top]=a+1;PointY[top]=b;
}
if(QP[a-1][b]==-StoneColor){top++;
PointX[top]=a-1;PointY[top]=b;
}
}
}// End while(top>=0);
ClearStone();
}//End FunMove
static void ClearStone(){//从棋盘把无气子涂掉
int i=0,j=0;
for(i=1;i<20;i++)
for(j=1;j<20;j++){
if(QP[i][j]==50){//if one
gg.setColor(Color.gray);////////////////////////
gg.fillOval(i*20+20-10, j*20+40-10, 20, 20);
gg.setColor(Color.black);
gg.drawLine(i*20+20-10<40?40:i*20+20-10,j*20+40,
i*20+20+10>400?400:i*20+20+10,j*20+40);
gg.drawLine(i*20+20,j*20+40-10<60?60:j*20+40-10,
i*20+20,j*20+40+10>420?420:j*20+40+10);
QP[i][j]=0;
if((i==4&&j==4)||(i==4&&j==10)||(i==4&&j==16)||
(i==10&&j==4)||(i==10&&j==10)||(i==10&&j==16)||
(i==16&&j==4)||(i==16&&j==10)||(i==16&&j==16)){//if two
gg.setColor(Color.black);
gg.fillOval(20+20*i-4,40+20*j-4,8,8);
}//End if two
}//End if one
}//end for
}//End ClearStone
}//End All Program
//////////////////////////////////
public class wq extends java.applet.Applet{
public void init(){Go NewFrame;
NewFrame=new Go();NewFrame.show();}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -