📄 map类的源代码.txt
字号:
g.drawString(strV, 0, 113, Graphics.LEFT | Graphics.TOP);
strV = String.valueOf(gameCount);
g.drawString(strV, 90, 113, Graphics.LEFT | Graphics.TOP);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
private void PaintCourse(Graphics g)
{
int tx, ty;
g.setColor(41, 24, 90);
if (flag)
{//画选择框
tx = 5 + (selectx - 1) * 13 + (selectx - 1) * 2 - 2;
ty = 5 + (selecty - 1) * 13 + (selecty - 1) * 2 - 2;
g.drawRect(tx, ty, 16, 16);
}
//画移动框
tx = 4 + (rolex - 1) * 13 + (rolex - 1) * 2 - 1;
ty = 4 + (roley - 1) * 13 + (roley - 1) * 2 - 1;
g.drawLine(tx, ty, tx + 5, ty);
g.drawLine(tx + 10, ty, tx + 16, ty);
g.drawLine(tx, ty, tx, ty + 5);
g.drawLine(tx, ty + 10, tx, ty + 16);
g.drawLine(tx + 16, ty, tx + 16, ty + 5);
g.drawLine(tx + 16, ty + 10, tx + 16, ty + 16);
g.drawLine(tx, ty + 16, tx + 5, ty + 16);
g.drawLine(tx + 10, ty + 16, tx + 16, ty + 16);
g.drawLine(tx + 8, ty + 4, tx + 8, ty + 11);
g.drawLine(tx + 4, ty + 8, tx + 11, ty + 8);
}
private void PaintGameMap(Graphics g)
{
int ix, iy, irx, iry;
g.setColor(255, 182, 255);
g.fillRect(0, 0, px, py);
iry = 5;
for (int y = 1; y < my - 1; y++)
{
irx = 5;
for (int x = 1; x < mx - 1; x++)
{
try
{
//位置已经为空
if (map[y][x] == e)
{
irx += 2;
continue;
}
//画出当前的图片
g.drawImage(image[map[y][x]], irx + (x - 1) * picx,
iry + (y - 1) * picy, Graphics.LEFT
| Graphics.TOP);
}
catch (Exception ex)
{
ex.printStackTrace();
}
irx += 2;
}
iry += 2;
}
}
public int RoleMove(int GameAction)
{
int iRtn;
iRtn = 0;
switch (GameAction)
{
case Canvas.LEFT:
if ((rolex - 1) >= 1)
{
{
rolex--;
}
}
iRtn = 1;
break;
case Canvas.RIGHT:
if ((rolex + 1) < mx - 1)
{
{
rolex++;
}
}
iRtn = 1;
break;
case Canvas.UP:
if ((roley - 1) >= 1)
{
{
roley--;
}
}
iRtn = 1;
break;
case Canvas.DOWN:
if ((roley + 1) < my - 1)
{
{
roley++;
}
}
iRtn = 1;
break;
case Canvas.FIRE:
if (map[roley][rolex] == e)
break;
if (!flag)
{
//第一次选择
selectx = rolex;
selecty = roley;
flag = true;
}
else
{
if ((selectx == rolex) && (selecty == roley))
{
flag = false;
break;
}
if ((map[selecty][selectx] == map[roley][rolex])&& (!clean))
{
if (CheckPoint(selectx, selecty, rolex, roley) == 0)
{
flag = false;
clean = true;
sx = selectx;
sy = selecty;
ex = rolex;
ey = roley;
iRtn = 2;
imagecount = imagecount - 2;
break;
}
}
selectx = rolex;
selecty = roley;
flag = true;
}
iRtn = 1;
break;
default:
iRtn = 0;
;
}
return iRtn;
};
private void SetCntMaps(int x, int y)
{
int ix, iy;
ix = x;
iy = y;
if (cmc == 0)
{
cx[cmc] = x;
cy[cmc] = y;
cmc++;
return;
}
if (((x == cx[cmc - 1]) && (y == cy[cmc - 1] + 1))
|| ((x == cx[cmc - 1]) && (y == cy[cmc - 1] - 1))
|| ((x == cx[cmc - 1] + 1) && (y == cy[cmc - 1]))
|| ((x == cx[cmc - 1] - 1) && (y == cy[cmc - 1])))
{
}
else
{
while(true)
{
if (((x == cx[cmc - 1]) && (y == cy[cmc - 1] + 1))
|| ((x == cx[cmc - 1]) && (y == cy[cmc - 1] - 1))
|| ((x == cx[cmc - 1] + 1) && (y == cy[cmc - 1]))
|| ((x == cx[cmc - 1] - 1) && (y == cy[cmc - 1])))
break;
cmc--;
}
}
cx[cmc] = x;
cy[cmc] = y;
cmc++;
}
private int CheckPoint(int iSx, int iSy, int iTx, int iTy)
{
int x1, x2, y1, y2;
cmc = 0;
SetCntMaps(iSx, iSy);
if (iSy > 0)
for (y1 = (int) (iSy - 1); y1 >= 0; y1--)
{
if ((y1 == iTy) && (iSx == iTx))
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y1][iSx] != e)
break;
SetCntMaps(iSx, y1);
if (iTx < iSx)
{ // left
for (x2 = (int) (iSx - 1); x2 >= iTx; x2--)
{
if ((x2 == iTx) && (y1 == iTy))
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y1][x2] != e)
break;
SetCntMaps(x2, y1);
if (x2 == iTx)
{
if (iTy < y1)
{// up
for (y2 = (int) (y1 - 1); y2 >= iTy; y2--)
{
if (y2 == iTy)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
else
{ // down
for (y2 = (int) (y1 + 1); y2 <= iTy; y2++)
{
if (y2 == iTy)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
}
}
}
else
{ // right
for (x2 = (int) (iSx + 1); x2 <= iTx; x2++)
{
if ((x2 == iTx) && (y1 == iTy))
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y1][x2] != e)
break;
SetCntMaps(x2, y1);
if (x2 == iTx)
{
if (iTy < y1)
{// up
for (y2 = (int) (y1 - 1); y2 >= iTy; y2--)
{
if (y2 == iTy)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
else
{ // down
for (y2 = (int) (y1 + 1); y2 <= iTy; y2++)
{
if (y2 == iTy)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
}
}
}
} // end of up
cmc = 0;
SetCntMaps(iSx, iSy);
if (iSy < my)
for (y1 = (int) (iSy + 1); y1 < my; y1++)
{
if ((y1 == iTy) && (iTx == iSx))
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y1][iSx] != e)
break;
SetCntMaps(iSx, y1);
if (iTx < iSx)
{ // left
for (x2 = (int) (iSx - 1); x2 >= iTx; x2--)
{
if ((x2 == iTx) && (y1 == iTy))
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y1][x2] != e)
break;
SetCntMaps(x2, y1);
if (x2 == iTx)
{
if (iTy < y1) {// up
for (y2 = (int) (y1 - 1); y2 >= iTy; y2--)
{
if (y2 == iTy)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
else
{ // down
for (y2 = (int) (y1 + 1); y2 <= iTy; y2++)
{
if (y2 == iTy)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
}
}
}
else
{ // right
for (x2 = (int) (iSx + 1); x2 <= iTx; x2++)
{
if ((x2 == iTx) && (y1 == iTy))
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y1][x2] != e)
break;
SetCntMaps(x2, y1);
if (x2 == iTx)
{
if (iTy < y1)
{// up
for (y2 = (int) (y1 - 1); y2 >= iTy; y2--)
{
if (y2 == iTy)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
else
{ // down
for (y2 = (int) (y1 + 1); y2 <= iTy; y2++)
{
if (y2 == iTy)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
}
}
}
} // end of down
cmc = 0;
SetCntMaps(iSx, iSy);
if (iSx > 0)
for (x1 = (int) (iSx - 1); x1 >= 0; x1--)
{
if ((x1 == iTx) && (iSy == iTy))
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[iSy][x1] != e)
break;
SetCntMaps(x1, iSy);
if (iTy < iSy) { // up
for (y2 = (int) (iSy - 1); y2 >= iTy; y2--)
{
if ((y2 == iTy) && (x1 == iTx))
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x1] != e)
break;
SetCntMaps(x1, y2);
if (y2 == iTy)
{
if (iTx < x1)
{// left
for (x2 = (int) (x1 - 1); x2 >= iTx; x2--)
{
if (x2 == iTx)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
else
{ // right
for (x2 = (int) (x1 + 1); x2 <= iTx; x2++)
{
if (x2 == iTx)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
}
}
}
else
{ // down
for (y2 = (int) (iSy + 1); y2 <= iTy; y2++)
{
if ((y2 == iTy) && (x1 == iTx))
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x1] != e)
break;
SetCntMaps(x1, y2);
if (y2 == iTy)
{
if (iTx < x1)
{// left
for (x2 = (int) (x1 - 1); x2 >= iTx; x2--)
{
if (x2 == iTx)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
else
{ // right
for (x2 = (int) (x1 + 1); x2 <= iTx; x2++)
{
if (x2 == iTx)
{
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
}
}
}
}
cmc = 0;
SetCntMaps(iSx, iSy);
if (iSx < mx)
for (x1 = (int) (iSx + 1); x1 < mx; x1++)
{
if ((x1 == iTx) && (iSy == iTy)) {
SetCntMaps(iTx, iTy);
return 0;
}
if (map[iSy][x1] != e)
break;
SetCntMaps(x1, iSy);
if (iTy < iSy) { // up
for (y2 = (int) (iSy - 1); y2 >= iTy; y2--) {
if ((y2 == iTy) && (x1 == iTx)) {
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x1] != e)
break;
SetCntMaps(x1, y2);
if (y2 == iTy) {
if (iTx < x1) {// left
for (x2 = (int) (x1 - 1); x2 >= iTx; x2--) {
if (x2 == iTx) {
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
} else { // right
for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) {
if (x2 == iTx) {
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
}
}
} else { // down
for (y2 = (int) (iSy + 1); y2 <= iTy; y2++) {
if ((y2 == iTy) && (x1 == iTx)) {
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x1] != e)
break;
SetCntMaps(x1, y2);
if (y2 == iTy) {
if (iTx < x1) {// left
for (x2 = (int) (x1 - 1); x2 >= iTx; x2--) {
if (x2 == iTx) {
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
} else { // right
for (x2 = (int) (x1 + 1); x2 <= iTx; x2++) {
if (x2 == iTx) {
SetCntMaps(iTx, iTy);
return 0;
}
if (map[y2][x2] != e)
break;
SetCntMaps(x2, y2);
}
}
}
}
}
} // end of right
return 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -