class
startGame
extends
JFrame {
boolean
canmove =
true
;
private
Image iBuffer;
private
Graphics gBuffer;
Mypanel mypanel;
Mypanel.MyState myState;
Hero hero;
Toolkit kit = Toolkit.getDefaultToolkit();
/**
* 载入图片数据
*/
Image mapimg[] = {kit.getImage(
"maparea/1.jpg"
), kit.getImage(
"maparea/2.jpg"
), kit.getImage(
"maparea/3.jpg"
),
kit.getImage(
"maparea/4.jpg"
), kit.getImage(
"maparea/5.jpg"
), kit.getImage(
"maparea/6.jpg"
),
kit.getImage(
"maparea/7.jpg"
), kit.getImage(
"maparea/8.jpg"
), kit.getImage(
"maparea/9.jpg"
),
kit.getImage(
"maparea/10.jpg"
), kit.getImage(
"npc/11.jpg"
), kit.getImage(
"npc/12.jpg"
),
kit.getImage(
"npc/13.jpg"
), kit.getImage(
"npc/14.jpg"
), kit.getImage(
"npc/15.jpg"
),
kit.getImage(
"npc/16.jpg"
), kit.getImage(
"npc/17.jpg"
), kit.getImage(
"npc/18.jpg"
),
kit.getImage(
"monsters/19.jpg"
), kit.getImage(
"monsters/20.jpg"
), kit.getImage(
"monsters/21.jpg"
),
kit.getImage(
"monsters/22.jpg"
), kit.getImage(
"monsters/23.jpg"
), kit.getImage(
"monsters/24.jpg"
),
kit.getImage(
"monsters/25.jpg"
), kit.getImage(
"monsters/26.jpg"
), kit.getImage(
"monsters/27.jpg"
),
kit.getImage(
"monsters/28.jpg"
), kit.getImage(
"monsters/29.jpg"
), kit.getImage(
"monsters/30.jpg"
),
kit.getImage(
"monsters/31.jpg"
), kit.getImage(
"monsters/32.jpg"
), kit.getImage(
"monsters/33.jpg"
),
kit.getImage(
"monsters/34.jpg"
), kit.getImage(
"monsters/35.jpg"
), kit.getImage(
"monsters/36.jpg"
),
kit.getImage(
"monsters/37.jpg"
), kit.getImage(
"monsters/38.jpg"
), kit.getImage(
"monsters/39.jpg"
),
kit.getImage(
"monsters/40.jpg"
), kit.getImage(
"monsters/41.jpg"
), kit.getImage(
"monsters/42.jpg"
),
kit.getImage(
"monsters/43.jpg"
), kit.getImage(
"monsters/44.jpg"
), kit.getImage(
"monsters/45.jpg"
),
kit.getImage(
"monsters/46.jpg"
), kit.getImage(
"monsters/47.jpg"
), kit.getImage(
"monsters/48.jpg"
),
kit.getImage(
"monsters/49.jpg"
), kit.getImage(
"monsters/50.jpg"
), kit.getImage(
"monsters/51.jpg"
),
kit.getImage(
"tool/52.jpg"
), kit.getImage(
"tool/53.jpg"
), kit.getImage(
"tool/54.jpg"
),
kit.getImage(
"tool/55.jpg"
), kit.getImage(
"tool/56.jpg"
), kit.getImage(
"tool/57.jpg"
),
kit.getImage(
"tool/58.jpg"
), kit.getImage(
"tool/59.jpg"
), kit.getImage(
"tool/60.jpg"
),
kit.getImage(
"tool/61.jpg"
), kit.getImage(
"tool/62.jpg"
), kit.getImage(
"tool/63.jpg"
),
kit.getImage(
"tool/64.jpg"
), kit.getImage(
"tool/65.jpg"
), kit.getImage(
"tool/66.jpg"
),
kit.getImage(
"tool/67.jpg"
), kit.getImage(
"tool/68.jpg"
), kit.getImage(
"tool/69.jpg"
),
kit.getImage(
"tool/70.jpg"
), kit.getImage(
"tool/71.jpg"
), kit.getImage(
"tool/72.jpg"
),
kit.getImage(
"tool/73.jpg"
), kit.getImage(
"role/74.jpg"
), kit.getImage(
"role/75.jpg"
),
kit.getImage(
"role/76.jpg"
), kit.getImage(
"role/77.jpg"
), kit.getImage(
"extra/78.jpg"
),
kit.getImage(
"extra/79.jpg"
), kit.getImage(
"extra/80.jpg"
), kit.getImage(
"extra/81.jpg"
), kit.getImage(
"extra/82.jpg"
), kit.getImage(
"extra/83.png"
)};
/**
* 怪物
*/
Monster monster[] =
new
Monster[
1
];
/**
* 初始化英雄与怪物属性
*/
public
void
init() {
hero =
new
Hero(
1
,
10000
,
10
,
10
,
0
,
0
,
10
,
0
,
0
,
1
, mapimg[
75
]);
monster[
0
] =
new
Monster(
"小史莱姆"
,
50
,
20
,
1
,
1
,
1
, mapimg[
18
]);
}
public
startGame() {
super
(
"魔塔demo"
);
init();
mypanel =
new
Mypanel();
mypanel.setBounds(
200
,
32
,
352
,
352
);
myState = mypanel.
new
MyState();
myState.setBounds(
30
,
32
,
128
,
352
);
Container c = getContentPane();
c.setLayout(
null
);
c.setBackground(Color.BLACK);
c.add(mypanel);
c.add(myState);
setSize(
590
,
450
);
setVisible(
true
);
setLocationRelativeTo(
null
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mypanel.requestFocus();
}
class
Mypanel
extends
JPanel
implements
KeyListener {
private
static
final
long
serialVersionUID = 1L;
private
int
level =
1
;
private
int
mx, my;
private
int
tempmap[][][];
public
Mypanel() {
setSize(
352
,
352
);
this
.addKeyListener(
this
);
this
.tempmap =
new
ReadMap().getMaps();
this
.mx =
10
;
this
.my =
5
;
requestFocus();
}
@Override
public
void
paint(Graphics g) {
if
(iBuffer ==
null
) {
iBuffer = createImage(
this
.getSize().width,
this
.getSize().height);
gBuffer = iBuffer.getGraphics();
}
for
(
int
i =
0
; i <
11
; i++) {
for
(
int
j =
0
; j <
11
; j++) {
gBuffer.drawImage(mapimg[tempmap[level][i][j] -
1
], j *
32
, i *
32
,
32
,
32
,
this
);
}
}
tempmap[
1
][
1
][
1
]=
2
;
gBuffer.drawImage(mapimg[
18
],
1
*
32
,
1
*
32
,
32
,
32
,
this
);
gBuffer.drawImage(mapimg[
75
], my *
32
, mx *
32
,
32
,
32
,
this
);
g.drawImage(iBuffer,
0
,
0
,
this
);
requestFocus();
}
/**
* 移动方法
* 键盘监听keycode实现移动
* 因为移动都差不多所以直接写了个move方法* 传入移动目的坐标以及英雄朝向的图片实现移动
*/
public
void
keyPressed(KeyEvent e) {
if
(canmove) {
if
(e.getKeyCode() ==
37
) {
if
(my-
1
>-
1
) move(mx,my-
1
,
74
);
}
else
if
(e.getKeyCode() ==
38
) {
if
(mx-
1
>-
1
) move(mx-
1
,my,
77
);
}
else
if
(e.getKeyCode() ==
39
) {
if
(my+
1
<
11
) move(mx,my+
1
,
75
);
}
else
if
(e.getKeyCode() ==
40
) {
if
(mx+
1
<
11
) move(mx+
1
,my,
76
);
}
}
mypanel.repaint();
}
@Override
public
void
keyReleased(KeyEvent e) {}
public
void
move(
int
gox,
int
goy,
int
face) {
if
(tempmap[level][gox][goy] ==
5
) {
tempmap[level][gox][goy] = face;
tempmap[level][mx][my] =
5
;
mx = gox;
my = goy;
}
myState.repaint();
repaint();
}
class
MyState
extends
JPanel {
Toolkit kit = Toolkit.getDefaultToolkit();
Image image[] = { kit.getImage(
"maparea/5.jpg"
), kit.getImage(
"tool/54.jpg"
), kit.getImage(
"tool/55.jpg"
),
kit.getImage(
"tool/56.jpg"
), kit.getImage(
"tool/59.jpg"
), kit.getImage(
"tool/66.jpg"
),
kit.getImage(
"tool/69.jpg"
), kit.getImage(
"tool/71.jpg"
) };
public
MyState() {
hero.getLevel();
setSize(
128
,
352
);
}
@Override
public
void
paint(Graphics g) {
Font font =
new
Font(
"TimesRoman"
, Font.BOLD + Font.ITALIC,
18
);
for
(
int
i =
0
; i <
4
; i++) {
for
(
int
j =
0
; j <
11
; j++) {
g.drawImage(image[
0
], i *
32
, j *
32
,
32
,
32
,
this
);
}
}
g.setFont(font);
g.drawString(hero.getLevel() +
"级"
,
0
,
1
*
32
);
g.drawString(
"生命 "
+ hero.getHp(),
0
,
2
*
32
);
g.drawString(
"攻击 "
+ hero.getAtk(),
0
,
3
*
32
);
g.drawString(
"防御 "
+ hero.getDef(),
0
,
4
*
32
);
g.drawString(
"金币 "
+ hero.getMoney(),
0
,
5
*
32
);
g.drawString(
"经验 "
+ hero.getExp(),
0
,
6
*
32
);
g.drawImage(image[
2
],
0
,
6
*
32
+
10
,
this
);
g.drawString(
""
+ hero.getYkey(),
2
*
32
,
7
*
32
);
g.drawImage(image[
3
],
0
,
7
*
32
+
10
,
this
);
g.drawString(
""
+ hero.getBkey(),
2
*
32
,
8
*
32
);
g.drawImage(image[
1
],
0
,
8
*
32
+
10
,
this
);
g.drawString(
""
+ hero.getRkey(),
2
*
32
,
9
*
32
);
g.drawString(
"第"
+ mypanel.level +
"层"
,
0
,
350
);
}
}
@Override
public
void
keyTyped(KeyEvent e) {
}
}