import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.ArrayList;
public class MySnake {
public static void main(String[] args){
SnakeFrame snakeFrame=new SnakeFrame();
snakeFrame.setVisible(true);
snakeFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class SnakeFrame extends JFrame{
Mysnake mysnake;
private JPanel controlpane=new JPanel();
private JPanel jp1=new JPanel();
private JPanel gamepane=new JPanel(); private JMenuBar mb=new JMenuBar();
private JMenu file=new JMenu("文件");
private JMenu select=new JMenu("选关");
private JMenu help=new JMenu("帮助");
private JMenu name=new JMenu("排名"); private JLabel Score=new JLabel("得分:");
private JLabel Dengj=new JLabel("等级:");
private JLabel DeFen=new JLabel();
private JLabel Speed=new JLabel();
private String Score1;
protected static final int YES_NO_OPTION = 0;
//产生按钮
private JMenuItem[] fitem={
//建立插入文件的菜单项
new JMenuItem("开始"),
new JMenuItem("暂停"),
new JMenuItem("继续"),
new JMenuItem("退出"), };
private JMenuItem[] xuan={
new JMenuItem("初级"),
new JMenuItem("中级"),
new JMenuItem("高级"),
};
//构造函数,产生面板
public SnakeFrame(){
setTitle("zw制作");
setLocation(200,200);
setSize(435,390);
setLayout(new BorderLayout());
Score1=String.valueOf(mysnake.score);
Score.setBounds(300, 25, 60, 20);
jp1.add(Score);
jp1.add(DeFen);
DeFen.setText(Score1);
Dengj.setBounds(300, 20, 60, 20);
jp1.add(Dengj);
jp1.add(Speed);
Speed.setText("SLOW");
add(jp1,BorderLayout.EAST);
controlpane.setLayout(new FlowLayout(FlowLayout.LEFT));
mb.add(file);
mb.add(name);
mb.add(select);
mb.add(help);
controlpane.add(mb);
add(controlpane,BorderLayout.NORTH);
add(gamepane);
gamepane.setFocusable(true);
gamepane.setBorder(BorderFactory.createLineBorder(Color.darkGray));
ActionListener actionListener=new ActionListener() {
public void actionPerformed(ActionEvent e) {
//当单击不同菜单项时候,出现不同反应
if(((JMenuItem)e.getSource())==fitem[0]){
mysnake.isRun=true;
}//如果单击开始,
if(((JMenuItem)e.getSource())==fitem[1]){
mysnake.isRun=false;
}//如果单击暂停,
if(((JMenuItem)e.getSource())==fitem[2]){
mysnake.isRun=true;
}//如堕单击继续,
if(((JMenuItem)e.getSource())==fitem[3]){//如果单击退出
int result=JOptionPane.showConfirmDialog(null, "确认退出",null,YES_NO_OPTION);
if(result==JOptionPane.YES_OPTION)
System.exit(0);
else
return;
}
if(((JMenuItem)e.getSource())==xuan[0]||((JMenuItem)e.getSource())==xuan[1]||
((JMenuItem)e.getSource())==xuan[2]){ if(((JMenuItem)e.getSource())==xuan[0]){
mysnake.speed=Mysnake.SLOW;
Speed.setText("SLOW");
}
if(((JMenuItem)e.getSource())==xuan[1]){
mysnake.speed=Mysnake.MID;
Speed.setText("MID");
}
if(((JMenuItem)e.getSource())==xuan[2]){
mysnake.speed=Mysnake.FAST;
Speed.setText("FAST");
}
}
}
};
for(int i=0;i<fitem.length;i++){
file.add(fitem[i]);
fitem[i].addActionListener(actionListener);
//插入监听按钮
}
for(int i=0;i<xuan.length;i++){
select.add(xuan[i]);
xuan[i].addActionListener(actionListener);
//插入监听按钮
}
}
}
class Mysnake{
boolean isRun;// ---------是否运动中
int derection;// --------方向
ArrayList<SnakeNode> body;// -----蛇体
SnakeNode food;// --------食物
int score;
int status;
int speed;
public static final int SLOW = 500;
public static final int MID = 300;
public static final int FAST = 100;
public static final int RUNNING = 1;
public static final int PAUSED = 2;
public static final int GAMEOVER = 3;
public static final int LEFT = 1;
public static final int UP = 2;
public static final int RIGHT = 3;
public static final int DOWN = 4;
public Mysnake(){
speed = SLOW;
score = 0;
isRun = false;
status = PAUSED;
derection = RIGHT;
body = new ArrayList<SnakeNode>();
body.add(new SnakeNode(60, 20));
body.add(new SnakeNode(40, 20));
body.add(new SnakeNode(20, 20));
}
}
class SnakeNode{
public static final int High=10;
public static final int Wide=10;
SnakeNode food;
int x;
int y;
public SnakeNode(int x,int y){
this.x=x;
this.y=y;
}
}
//绘制部分
/*
class DrawSnake extends JPanel{
Mysnake mysnake;
public DrawSnake(Mysnake mysnake) {
this.mysnake=mysnake;
} public void paintComponent(Graphics g) {
super.paintComponent(g);
SnakeNode snakeNode = null;
for (int i = 0; i < mysnake.body.size(); i++) {// ---红蓝间隔画蛇身
if (i % 2 == 0)
g.setColor(Color.blue);
else
g.setColor(Color.yellow);
snakeNode = mysnake.body.get(i);
g.fillRect(snakeNode.x, snakeNode.y, snakeNode.High, snakeNode.Wide);// *******************试用*********************
}
snakeNode = snakeNode.food;
g.setColor(Color.red);
g.fillRect(snakeNode.x, snakeNode.y, snakeNode.High, snakeNode.Wide);
}
}
*/问题1:
首先是不能运行,在没有画图部分(/* */部分)时候,还能运行,但是事件的监听也不正常,就是在选择等级部分,面板上不能正常反映
问题2:
就是绘制蛇头、蛇身部分了
呵呵
谢谢解答了
解决方案 »
- 如何做Swing中添加背景图片!
- 请帮忙
- 如何用JAVA语言获得电脑CPU的型号
- SUN网站SWING 的example在哪下,给个地址,谢谢了.
- 快来回答,高分-------怎样用Java代码,访问outlook。
- 面向对象入门求助~~~感觉java的"继承"功能设计得很混乱?
- JAVA SOCKET客户端如何实时和服务器端进行通讯?用线程吗?
- 再散分。谁能给一些Applet画图的源码例子,给连接也行。
- Math.round(14.8)是等于15.0,还是15
- 由于本人函授本科,期末JAVA两题编程不会写,楼主只会C。望高手们帮忙一下,明早一大早就要考试了,坐等
- 求助
- java中常用的数据结构封装在哪里了?
Mysnake mysnake;
这里需要初始化一下
Mysnake mysnake = new Mysnake();