📄 goboard.java
字号:
package org.nebula.goapplet;
import java.util.*;
import java.awt.*;
import java.net.*;
import org.nebula.cwt.grid.*;
import org.nebula.cutil.*;
/**
* GoBoard
*
* Description:
*
* @author harry
*
*/
public class GoBoard extends Grid {
GoApplet app = null;
// Image back_img, black_img, white_img;
String comment = null;
Vector v = new Vector();
Font font;
public GoBoard(GoApplet app, GoBoardModel gm) {
super(gm.getGridModel(), 12, 12, 24, 24);
this.app = app;
/*
MediaTracker mt = new MediaTracker(this);
black_img = app.getImage(app.getCodeBase(), "/img/black2.png");
white_img = app.getImage(app.getCodeBase(), "/img/white2.png");
mt.addImage(black_img, 0);
mt.addImage(white_img, 0);
try
{
mt.waitForAll(); //??????
}
catch (Exception ex)
{
Logger.debug(ex.toString());
}
*/
// white_img = app.getImage(this.getClass().getResource("/img/white2.png"));
// black_img = app.getImage(this.getClass().getResource("/img/black2.png"));
}
public void setComment(String c) {
// repaint();
}
public void drawBackground(Graphics g){
if (font == null) font = g.getFont();
int b = getLeftBorder();
int cb = getCubicWidth();
g.setColor(new Color(255, 255, 255));
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(new Color(0xffd020));
// g.fillRect(0, 0, getWidth(), getHeight());
g.fillRect(0, 0, cb * model.getColumns() + 2*b, cb * model.getColumns() + 2*b);
// g.setColor(Color.BLACK);
// g.fillArc(0, 0, cb, cb, 0, 360);
g.setColor(new Color(0));
g.translate(b+cb/2, b+cb/2);
for (int i = 0 ; i < model.getRows() ; i++){
g.drawLine(0, i * cb, cb * (model.getColumns()-1), i * cb);
g.drawLine(i * cb, 0, i * cb , cb * (model.getColumns()-1));
}
g.translate(-(b+cb/2), -(b+cb/2));
}
public void drawCustom(Graphics g) {
}
public void drawCubic(Graphics g, int col, int row){
// Logger.debug("showing cubic: [" + col + "," + row + "]");
GoPoint p = (GoPoint) getModel().getObject(col, row);
int cb = getCubicWidth();
boolean isEmpty = false;
if (p.getState() == GoPoint.BLACK) {
Logger.debug("showing black [" + col + "," + row + "," + cb+ "]");
g.setColor(Color.BLACK);
g.fillArc(cb / 12, cb / 12, 5*cb / 6, 5*cb / 6, 0, 360);
}
else if (p.getState() == GoPoint.WHITE) {
Logger.debug("showing white [" + col + "," + row + "," + cb + "]");
g.setColor(Color.WHITE);
g.fillArc(cb / 12, cb / 12, 5*cb / 6, 5*cb / 6, 0, 360);
g.setColor(Color.BLACK);
g.drawArc(cb / 12, cb / 12, 5*cb / 6, 5*cb / 6, 0, 360);
}
else {
isEmpty = true;
if (((col == 3) || (col == 9) || (col == 15)) && ((row == 3) || (row == 9) || (row == 15)))
{
g.setColor(new Color(0));
g.fillArc(cb / 2 - 2, cb / 2 - 2, 4, 4, 0, 360);
}
}
if (p.getStyle() == GoPoint.HIGHLIGHT) {
g.setColor(new Color(255, 0, 0));
g.fillArc(cb / 3, cb / 3, cb / 3, cb / 3, 0, 360);
}
if (p.getTip() != GoPoint.NONE) {
g.setColor(Color.red);
int c = p.getTip();
if (c == GoPoint.TRIANGLE) {
int[] xx = {cb/2, cb * 3/4, cb/4};
int[] yy = {cb/5, cb * 3/5, cb * 3/5};
g.fillPolygon(xx, yy, 3);
}
else if (c == GoPoint.SQUARE) {
g.fillRect(cb/4, cb/4, cb/2, cb/2);
}
else if (c == GoPoint.CIRCLE) {
g.drawOval(cb/4, cb/4, cb/2, cb/2);
}
else if (c == GoPoint.CROSS) {
g.drawLine(cb/4, cb/4, cb * 3/4, cb * 3/4);
g.drawLine(cb/4, cb * 3/4, cb * 3/4, cb/4);
}
else {
if (isEmpty) {
g.setColor(new Color(206,207, 250));
g.drawLine(cb/4, cb/2, cb * 3/4, cb/2);
g.drawLine(cb/2, cb/4, cb/2, cb * 3/4);
g.setColor(Color.red);
}
char cp = (char)c;
Logger.debug("show tip [" + col + "," + row + "," + cp + "]");
Font ft = g.getFont();
g.setFont(new Font(ft.getName(), ft.getStyle(), 12));
g.drawString("" + cp, cb * 2/5, cb * 2/3);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -