Автор Тема: Java - малко помощ за един аплет  (Прочетена 1031 пъти)

runtime

  • Напреднали
  • *****
  • Публикации: 807
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
  • LZ1DOT
    • Профил
    • WWW
Здравейте,
Свалих си еднo аплетче за кръстословици  от sourceforge обаче, не ще да приема въвеждането на кирилица в кръстословицата по една или друга причина. Моля, за малко помощ да ме насочите защо и коя част от кода го прави, а ако може и да кажете как да го оправя това. Ако не Ви се занимава то поне ме насочете към коя част от кода идва проблема аз ще прочета тук и там и ще си го компилирам с eclipse. Или евентуално има нещо за дописване?

Стигнах до извода след известно четене, че проблема е от класа AWT, обаче нещо не мога да го реша и не намирам как да му окажа да чете кирилаца.

Извинявам се, но не разборам от JAVA много...

Линк към аплета: http://sourceforge.net/projects/toohot/

Кода на аплета е:
Код:

/**
 * TooHot Crossword Applet: an open source crossword puzzle game in java.
 * Copyright (c) 2002 Phyrum Tea
 * http://www.tea.ch/
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307, USA.
 */

import java.applet.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;

/* Last modifications 10.09.2002 by Phyrum Tea
 * - removed java.awt.geom.*;
 * ToDo: - Scrolle, wenn das Kreuzwortrдtsel nicht in das Fenster passt.
 *       - oder skalieren
 */
public class TooHotCrosswordApplet extends Applet {
final static int UPWARDS = 1;
final static int DOWNWARDS = 2;

/** field type is clue */
final static int C = 4;

/** field type is answer */
final static int A = 8;

/** clue direction is east-north */
final static int EN = 16;

/** clue direction is east */
final static int EE = 32;

/** clue direction is east-south */
final static int ES = 64;

/** clue direction is south-west */
final static int SW = 128;

/** clue direction is south */
final static int SS = 256;

/** clue direction is south-east */
final static int SE = 512;

final static int AR = 4096;

final static int H = 8192;

final static int V = H*2;

final static int BV = V*2;

final static int EV = BV*2;

final static int BH = EV*2;

final static int EH = BH*2;

/** field is selected, current position */
final static int CURPOS = 1024;

/** field is part of current word */
final static int CURWORD = 2048;

/** latest x-position of cursor */
private int curX;

/** latest y-position of cursor */
private int curY;

private int cellsX;
private int cellsY;

/** current direction */
private int curDir;

/** id of current Question */
private int curQuestionPos;

private String curQuestion;

private String curAnswer;

private int curAnswerX;

private int curAnswerY;

/** array of questions */
private Vector questions;

/** buffered image */
private Image bImg;

/** fields */
private Element[][] field;

/** width of cell */
private int wc;

/** url of crossword file */
private URL dataFileURL;

/** base url */
private URL baseURL;
private URL toohotURL;

/** fonts are initialized flag */
private boolean fontInitialized;

/** backround of crossword puzzle */
private Color bgColor;

/** color of frame */
private Color frameColor;

/** line color */
private Color lineColor;

/** background color of question field */
private Color qbgColor;

/** background color of answer field */
private Color abgColor;

/** background of current wordcell */
private Color abgcwColor;

/** background of current cell */
private Color abgccColor;

/** background color of selected word fields */
private Color wbgColor;

/** font color of question */
private Color qfColor;

/** font color of answer */
private Color afColor;

/** font for answer */
private Font aFont;

  /** font for clues */
private Font qfFont;

/** small font for clues */
private Font qsFont;

/** large font clues */
private Font qlFont;

private FontMetrics aFontM;
private FontMetrics qfFontM;
private FontMetrics qsFontM;
private FontMetrics qlFontM;

/** width of this component */
private int drawWidth;

/** height of this component */
private int drawHeight;

/** area of question text */
private int qAreaHeight;

/** padding between question area and puzzle area */
private int qPadding;

private int padY;
private Toolkit toolkit;

private Cursor handCursor, defaultCursor;
private Cursor currentCursor;

/** answer of user */
private String fielAnswer[][];

public void init() {
String param;

/* initialize default values, some of these values could be
* retrieved from applet parameters in future releases
*/
toolkit = getToolkit();
fontInitialized = false;
wc = 30;
bgColor = Color.white;
frameColor = Color.black;
lineColor = Color.black;
qbgColor = Color.darkGray;
abgColor = Color.white;
wbgColor = Color.black;
qfColor = Color.white;
afColor = Color.black;
abgccColor = Color.orange;
abgcwColor = Color.lightGray;
curDir = H;
curAnswer = null;
bImg = null;
dataFileURL = null;
baseURL = getDocumentBase();
/* get parameter */
param = getParameter("WIDTHCELL");
if (param != null) {
try {
wc = Integer.parseInt(param);
} catch (NumberFormatException e) {
}
}

qfFont = new java.awt.Font("SansSerif", 0, (int)(wc/5.0));
aFont = new java.awt.Font("SansSerif", 0, (int)(wc*0.6));
qlFont = new java.awt.Font("SansSerif", 0, 14);
qsFont = new java.awt.Font("SansSerif", 0, 10);

drawHeight = getSize().height;
drawWidth = getSize().width;
qAreaHeight = 20;
qPadding = 15;
    padY = qAreaHeight+qPadding;
handCursor = new Cursor(Cursor.HAND_CURSOR);
defaultCursor = new Cursor(Cursor.DEFAULT_CURSOR);
currentCursor = defaultCursor;

/* get location of crossword puzzle data */
param = getParameter("DATAURL");
if (param != null) {
try {
if (param.indexOf(":") < 0)
dataFileURL = new URL(baseURL,param);
else
dataFileURL = new URL(param);
toohotURL = new URL("http://www.toohot.ch/");
} catch (MalformedURLException u) {
}
}

/* load puzzle from that location */
try {
loadCrossword(dataFileURL);
} catch (IOException ioe) {
ioe.printStackTrace();
}

/* set initial selection */
setActivePos(0,0);

requestFocus();
  }

public void paint(Graphics g) {
render(g);
super.paint(g);
}

public void update(Graphics g) {
Rectangle cb = getBounds();

/* we do double buffering with a buffered image */
if (bImg == null) {
bImg = createImage(cb.width,cb.height);
}
render(bImg.getGraphics());
if (bImg != null)  {
g.drawImage(bImg, cb.x, cb.y, this);
toolkit.sync();
}
}

public void render(Graphics g) {
int i,j;
if (!fontInitialized) {
/* one time Font-Metrics generation */
qfFontM = g.getFontMetrics(qfFont);
aFontM = g.getFontMetrics(aFont);
qlFontM = g.getFontMetrics(qlFont);
qsFontM = g.getFontMetrics(qsFont);
fontInitialized = true;
}
   
    /* we now fill background of applet, clue area and crossword area,
/* first clear applet background with background color
*/
g.setColor(bgColor);
g.fillRect(0, 0, drawWidth, drawHeight);

/* clear top clue area with clue background color */
    g.setColor(qbgColor);
    g.fillRect(0,0,drawWidth,qAreaHeight);
   
    /* draw border around top clue area */
    g.setColor(frameColor);
    g.drawRect(0,0,drawWidth-1,qAreaHeight-1);

/* clear puzzle area with background color of answers */   
    g.setColor(abgColor); 
    g.fillRect(1,padY+1,cellsX*wc-1,cellsY*wc-1);
   
    /* no comment */
    g.setFont(qsFont);
    g.setColor(afColor);
    g.drawString("TooHot Crossword Applet © 2002 http://www.toohot.ch/", 2, padY-3);
   
    g.setColor(qfColor);
    /* test if question is too wide for larger font */
    if (qlFontM.stringWidth(curQuestion) > drawWidth - 4) {
    g.setFont(qsFont);
    g.drawString(curQuestion,2,qAreaHeight-6);
    } else {
    /* we can use large fonts for top clue area */
    g.setFont(qlFont);
    g.drawString(curQuestion,2,qAreaHeight-5);
    }

/* start drawing cells */
for (j=0;j<cellsX ;j++) {
    for (i=0;i<cellsY;i++) {
   
    /* fill backgrounds */
    if (field[i][j] == null) {
    /* cell is undefined */
    g.setColor(qbgColor);
g.fillRect(1+j*wc,padY+i*wc+1,wc-1,wc-1);
    continue;
    }
    if ((field[i][j].t&CURPOS) == CURPOS) {
    /* cell is in current position of selection */
    g.setColor(abgccColor);
g.fillRect(1+j*wc,padY+i*wc+1,wc-1,wc-1);
    } else if ((field[i][j].t&CURWORD) == CURWORD) {
    /* cell is part of word of current selection */
    g.setColor(abgcwColor);
g.fillRect(1+j*wc,padY+i*wc+1,wc-1,wc-1);
    } else if ((field[i][j].t&C) == C) {
    /* cell contains a clue */
    g.setColor(qbgColor);
g.fillRect(1+j*wc,padY+i*wc+1,wc-1,wc-1);
    } else {
    }
   
   
if (field[i][j].g != null) {
/* field has a user-guess, draw guessed character */
g.setColor(afColor);
g.setFont(aFont);
g.drawString(field[i][j].g,(int)(j*wc+(wc-aFontM.stringWidth(field[i][j].g))/2),
(int)(padY+(i+0.9)*wc-((wc-aFontM.getAscent())/2)));
} else if ((field[i][j].t&C) == C) {
/* field is clue */
g.setColor(qfColor);
if (field[i][j].fclue == null) drawString(field[i][j].clue,j*wc,padY+i*wc,g);
else drawStringForm(field[i][j].fclue,j*wc,padY+i*wc,g);
}
if ((field[i][j].t&AR) == AR) {
/* field is arrow field too */
if((field[i][j].a&(SE+ES))==(SE+ES)) {
if ((field[i][j].a&SE) == SE) renderArrow(1+j*wc,padY+i*wc+1,SE,g);
if ((field[i][j].a&ES) == ES) renderArrow(1+j*wc,padY+i*wc+1,ES,g);
} else if((field[i][j].a&(SS+EE))==(SS+EE)) {
renderArrow(1+j*wc,padY+i*wc+1,SS,g);
renderArrow(1+j*wc,padY+i*wc+1,EE,g);
} else renderArrow(1+j*wc,padY+i*wc+1,field[i][j].a,g);
/* draw arrow */
}
    }
    }
g.setColor(lineColor);
/* draw horizontal lines */
for (i=1;i<cellsY;i++) g.drawLine(1, padY+i*wc, cellsX*wc-1, padY+i*wc);

/* draw vertical lines */
for (j=1;j<cellsX;j++) g.drawLine(j*wc, padY+1, j*wc, padY+cellsY*wc-1);

/* draw border around puzzle */
g.setColor(frameColor);
g.drawRect(0,padY,cellsX*wc,cellsY*wc);
}

protected void setActivePos(int row, int col) {
int i=-1,j=-1,k,a=-1,b=-1;

repaint();

if ((row < 0)||(row >cellsY-1)||(col < 0)||(col > cellsX-1)) return;
if (field[row][col] == null) return;
int len;

/* reset current selection */
if (curAnswer != null) {
len = curAnswer.length();
field[curY][curX].t &= ~CURPOS;
if (curDir==V) {
for (k=0;k<len;k++) {
field[curAnswerY+k][curAnswerX].t &= ~CURWORD;
}
} else {
for (k=0;k<len;k++) {
field[curAnswerY][curAnswerX+k].t &= ~CURWORD;
}
}
if ((curX == col)&&(curY == row)&&((field[row][col].d&(H+V)) == (H+V))) {
curDir = (curDir==V)?H:V;
}
}

/* do we have to change direction? if we have both direction as choice,
* we keep old direction and do nothing */
if ((field[row][col].d&(H+V)) != (H+V)) {
curDir = field[row][col].d;
}

if ((field[row][col].t&C) == C) {
a = row;
b = col;
switch (field[row][col].d) {
case ES: i = row+1; j = col; curDir = H; break;
case SE: i = row; j = col+1; curDir = V; break;
case EE: i = row; j = col+1; curDir = H; break;
case EN: i = row-1; j = col; curDir = H; break;
case SW: i = row; j = col-1; curDir = V; break;
case SS: i = row+1; j = col; curDir = V; break;
}
} else if (curDir==V) {
/* find clue in vertical direction */
i = row; j = col;
while ((i>=0)&&((BV&field[i][j].t) != BV)) i--;
if ((BV&field[i][j].t) == BV) {
if ((i-1>=0)&&(field[i-1][j] != null)&&((SS&field[i-1][j].d)==SS)) { a = i-1; b = j; }
else if ((j-1>=0)&&(field[i][j-1] != null)&&((SE&field[i][j-1].d)==SE)) { a = i; b = j-1; }
else if ((j+1<cellsX)&&(field[i][j+1] != null)&&((SW&field[i][j+1].d)==SW)) { a = i; b = j+1; }
}
} else {
/* find clue in horizontal direction */
i = row; j = col;
while ((j>=0)&&((BH&field[i][j].t)!=BH)) j--;
if ((BH&field[i][j].t)==BH) {
if ((j-1>=0)&&(field[i][j-1] != null)&&((EE&field[i][j-1].d)==EE)) { a = i; b = j-1; }
else if ((i-1>=0)&&(field[i-1][j] != null)&&((ES&field[i-1][j].d)==ES)) { a = i-1; b = j; }
else if ((i+1<cellsY)&&(field[i+1][j] != null)&&((EN&field[i+1][j].d)==EN)) { a = i+1; b = j; }
}
}

/* now: a contains row and b contains column of clue that was found and
* i contains row and j contains column of first letter of answer
*/
len = field[a][b].answer.length();

curQuestion = field[a][b].clue;
curAnswer = field[a][b].answer;

curAnswerX = j;
curAnswerY = i;

/* tag all cells of word that is part of current selection */
if (curDir==V) {
for (k=0;k<len;k++) {
field[i+k][j].t |= CURWORD;
}
} else {
for (k=0;k<len;k++) {
field[i][j+k].t |= CURWORD;
}
}

if ((a==row)&&(b==col)) {
curX = j;
curY = i;
} else {
curX = col;
curY = row;
}
field[curY][curX].t |= CURPOS;

repaint();
}

public boolean mouseMove(Event evt, int px, int py) {
if ((py > qAreaHeight)&&(py < padY)) {
setCursor(handCursor);
currentCursor = handCursor;
getAppletContext().showStatus(toohotURL.toString());
} else if (currentCursor != defaultCursor) {
setCursor(defaultCursor);
currentCursor = defaultCursor;
}
return true;
}

public boolean mouseDown(Event evt, int px, int py) {
int x = px;
int y = py-qAreaHeight-qPadding;
if ((py > qAreaHeight)&&(py < padY)) {
getAppletContext().showDocument(toohotURL);
}

if ((x < 0)||(y < 0)||(x > cellsX*wc)||(y > cellsY*wc)) {
System.out.println("Ausserhalb");
} else {
int j = (int)((x-x%wc)/wc);
int i = (int)((y-y%wc)/wc);
setActivePos(i,j);
}
return false;
}

public boolean keyDown(Event evt, int key) {
int row = curY,col = curX,i,dir=curDir,step=1;
char[] car = new char[1];
car[0] =  (char)key;
if ((key > 256)||(key < 32)) {
switch (key) {
case 9: break; /* tabulator */
case 10: break; /* enter key */
case 1004: /* up arrow */
if (curY==0) row = cellsY-1;
else row = curY-1;
dir = V;
step = -1;
break;
case 1005: /* down arrow */
row = (curY+1)%cellsY;
dir = V;
break;
case 1006: /* left arrow */
if (curX==0) col = cellsX-1;
else col = curX-1;
dir = H;
step = -1;
break;
case 1007: /* right arrow */
col = (curX+1)%cellsX;
dir = H;
break;
default: return false;
}
/* now go to the preferred direction, we don't want to make an endless
* loop, so count loop with i
*/
i=0;
if (dir == H) {
while (((i < cellsX)&&(field[row][col] == null))||
((i < cellsX)&&(field[row][col].clue != null))) {
col = (cellsX+col+step)%cellsX;
i++;
}
} else {
while (((i < cellsY)&&(field[row][col] == null))||
((i < cellsY)&&(field[row][col].clue != null))) {
row = (cellsY+row+step)%cellsY;
i++;
}
}
} else {
/* user has guessed */
field[curY][curX].g = (new String(car)).toUpperCase();
if ((curY+1==cellsY)&&(curX+1==cellsX)) {
row=0;
col=0;
} else if(curDir==V) {
if (curY+1==cellsY) {
row = 0;
col =curX+1;
} else {
row = curY+1;
}
} else {
if (curX+1==cellsX) {
col = 0;
row = curY+1;
} else {
col = curX+1;
}
}
}

/* advance to the new position */
setActivePos(row,col);
return true;
}

private void renderArrow(int cx, int cy, int arrow, Graphics g) {
int k;
float[] xP = {0.2f,0.3f,0.2f};
float[] yP = {1.4f,1.5f,1.6f};
float[] xsP = {-0.4f,-0.5f,-0.6f};
float[] ysP = {0.2f,0.3f,0.2f};
boolean horizontal = true;
g.setColor(frameColor);
if ((arrow&EE) == EE) {
cx -= 0.2*wc;
cy -= wc;
} else if ((arrow&ES) == ES) {
cy -= wc;
g.drawLine((int)(cx+0.1*wc), cy+wc, (int)(cx+0.1*wc), (int)(cy+1.5*wc));
g.drawLine((int)(cx+0.1*wc), (int)(cy+1.5*wc), (int)(cx+0.2*wc), (int)(cy+1.5*wc));
} else if ((arrow&EN) == EN) {
cy -= wc;
g.drawLine((int)(cx+0.1*wc), cy+2*wc, (int)(cx+0.1*wc), (int)(cy+1.5*wc));
g.drawLine((int)(cx+0.1*wc), (int)(cy+1.5*wc), (int)(cx+0.2*wc), (int)(cy+1.5*wc));
} else if ((arrow&SS) == SS) {
cx += wc; cy -= 0.2*wc;
horizontal = false;
} else if ((arrow&SW)==SW) {
cx +=wc;
g.drawLine(cx, (int)(cy+0.1*wc), (int)(cx-0.5*wc), (int)(cy+0.1*wc));
g.drawLine((int)(cx-0.5*wc), (int)(cy+0.1*wc), (int)(cx-0.5*wc), (int)(cy+0.2*wc));
horizontal = false;
} else if ((arrow&SE)==SE) {
cx += wc;
g.drawLine((int)(cx-wc), (int)(cy+0.1*wc), (int)(cx-0.5*wc), (int)(cy+0.1*wc));
g.drawLine((int)(cx-0.5*wc),(int)(cy+0.1*wc),(int)(cx-0.5*wc), (int)(cy+0.2*wc));
horizontal = false;
}

if (!horizontal) { xP = xsP; yP = ysP; }
int[] xT = new int[xP.length];
int[] yT = new int[yP.length];
xT[0] = (int)(cx+xP[0]*wc);
yT[0] = (int)(cy+yP[0]*wc);;
for (k = 1; k < xP.length; k++) {
xT[k] = (int)(cx+xP[k]*wc);
yT[k] = (int)(cy+yP[k]*wc);
}
g.fillPolygon(xT,yT,xT.length);
}

private void drawString(String s, int x, int y, Graphics g) {
boolean fitv = false;
FontMetrics fm = null;
g.setFont(qfFont);

Vector sv = new Vector();
int i,size = qfFont.getSize();
String s1;
float w1,w2;
while (!fitv) {
fm = g.getFontMetrics();
if (((fm.stringWidth(s)*fm.getHeight())/(0.8*wc) < 0.8*wc)||
(fm.getHeight()*15 < wc)) fitv = true;
else g.setFont(new Font(qfFont.getName(),qfFont.getStyle(),--size));
}

while (fm.stringWidth(s) > (wc*0.8)) {
i = 1;
s1 = "";
while (fm.stringWidth(s1) < (wc*0.8)) {s1 = s.substring (0,i++);}
sv.addElement(s.substring(0,i-1).trim());
s = s.substring(i-1).trim();
}
sv.addElement(s);
int sh = fm.getHeight();
float sy = (wc-sh*sv.size())/2;
g.setColor(qfColor);
for (i = 0; i < sv.size(); i++) {
g.drawString((String)(sv.elementAt(i)), x+(wc-fm.stringWidth((String)(sv.elementAt(i))))/2, (int)(y+sy+sh*(i+1)-2));
}
}

/** draw clue, string is already formatted with new lines */
private void drawStringForm(String s, int x, int y, Graphics g) {
int i, sh, maxW=0;
String str;
g.setFont(qfFont);
FontMetrics fm = g.getFontMetrics();
Vector sv = new Vector();
while ((i = s.indexOf("\\n")) > 0) {
str = s.substring(0,i);
sv.addElement(str);
s = s.substring(i+2);
if (maxW < fm.stringWidth(str)) maxW = fm.stringWidth(str);
}
sv.addElement(s);
if (maxW < fm.stringWidth(s)) maxW = fm.stringWidth(s);
sh = fm.getAscent();
float sy = (wc-sh*sv.size())/2;
g.setColor(qfColor);
for (i = 0; i < sv.size(); i++) {
g.drawString((String)(sv.elementAt(i)), x+(wc-maxW)/2, (int)(y+sy+sh*(i+1)-2));
}
}

/** Load crossword puzzle file with formatted clues */
public void loadCrossword(URL fileURL) throws IOException {
int i,j;
int w=0,h=0,d,c,r;
String s1 = "",s2,answer,clue,fclue;
BufferedReader datei = new BufferedReader(new InputStreamReader(fileURL.openStream()));
boolean skip = false;

/* read size of crossword puzzle */
questions = new Vector();
while (!skip&&((s1 = datei.readLine()) != null)) {
if (s1.startsWith("#")) continue;
i = s1.indexOf(',');
if (i > 0) {
w = Integer.parseInt(s1.substring(0,i));
cellsX = w;
h = Integer.parseInt(s1.substring(i+1));
cellsY = h;
skip = true;
} else return;
}
field = new Element[h][];
for (i = 0; i < h; i++) {
field[i] = new Element[w];
for (j=0;j<w;j++) field[i][j] = null;
}

/* read content of crossword puzzle */
while ((s1 = datei.readLine()) != null) {
/* comment-lines start with # */
if (s1.startsWith("#")) continue;
i = s1.indexOf(',');
if (i > 0) {
c = Integer.parseInt(s1.substring(0,i));
s1 = s1.substring(i+1);
} else continue;
i = s1.indexOf('/');
if (i > 0) {
r = Integer.parseInt(s1.substring(0,i));
s1 = s1.substring(i+1);
} else continue;
i = s1.indexOf('/');
if (i > 0) {
s2 = s1.substring(0,i);
if ("ES".equals(s2)) {        d = ES;
} else if ("SE".equals(s2)) { d = SE;
} else if ("EE".equals(s2)) { d = EE;
} else if ("EN".equals(s2)) { d = EN;
} else if ("SW".equals(s2)) { d = SW;
} else if ("SS".equals(s2)) { d = SS;
} else continue;
s1 = s1.substring(i+1);
} else continue;
i = s1.indexOf('=');
fclue = null;
if (i > 0) {
answer = s1.substring(0,i);
j = s1.indexOf("//");
if (j != -1) {
clue = s1.substring(i+1,j);
s1 = s1.substring(j+2);
if (s1.length() > 0) fclue = s1;
} else clue = s1.substring(i+1);
} else continue;
insertClueAnswer(clue,answer,fclue,r,c,d);
questions.addElement(clue);
}
}

protected void insertClueAnswer(String clue, String answer, String fclue, int r, int c, int d) {
int i,len,row=0,col=0,dir=H;
Element elem = new Element(clue,answer,fclue,C);
field[r][c] = elem;
len = answer.length();
switch (d) {
case ES: row = r+1; col = c; dir = H; break;
case SE: row = r; col = c+1; dir = V; break;
case EE: row = r; col = c+1; dir = H; break;
case EN: row = r-1; col = c; dir = H; break;
case SW: row = r; col = c-1; dir = V; break;
case SS: row = r+1; col = c; dir = V; break;
}

field[r][c].t |= dir;
field[r][c].d = d;
if (dir == H) {
for (i=0;i < len;i++) {
if (field[row][col+i] != null) field[row][col+i].d |= H;
else {
field[row][col+i] = new Element(null,answer.substring(i,i+1),fclue,A);
field[row][col+i].d = H;
}
}
field[row][col].t |= BH|AR;
field[row][col+len-1].t |= EH;
} else {
for (i=0;i < len;i++) {
if (field[row+i][col] != null) field[row+i][col].d |= V;
else {
field[row+i][col] = new Element(null,answer.substring(i,i+1),fclue,A);
field[row+i][col].d = V;
}
}
field[row][col].t |= BV|AR;
field[row+len-1][col].t |= EV;
}
field[row][col].a |= d;
}

class Element {
/* clue */
String clue;

/* part of answer */
String answer;

/* formatted clue */
String fclue;
/* user guess */
String g;

int d;

/* type */
int t;

/* arrow type */
int a;

Element(String c, String a, String fclue, int t) {
this.clue = c;
this.answer = a;
this.fclue = fclue;
this.t = t;
}
}
}

« Последна редакция: Mar 22, 2009, 15:57 от run_time »
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Стартиране на Java приложение !
Общ форум
Diabolic_Soul 4 4660 Последна публикация Feb 22, 2005, 00:22
от JOKe
Java IDE?
Идеи и мнения
toxigen 9 5641 Последна публикация Apr 06, 2005, 23:00
от Ivozen
Java/C++
Търсене
bronicman 2 3696 Последна публикация Dec 04, 2005, 19:57
от bronicman
C/C++/Java програмист
Търсене
MNachev 0 2152 Последна публикация Feb 15, 2006, 10:00
от MNachev
Java
Настройка на програми
ph5 18 3562 Последна публикация Oct 08, 2006, 11:26
от ph5