Java贪吃蛇报告.docx

上传人:b****6 文档编号:13744310 上传时间:2023-06-17 格式:DOCX 页数:28 大小:101.38KB
下载 相关 举报
Java贪吃蛇报告.docx_第1页
第1页 / 共28页
Java贪吃蛇报告.docx_第2页
第2页 / 共28页
Java贪吃蛇报告.docx_第3页
第3页 / 共28页
Java贪吃蛇报告.docx_第4页
第4页 / 共28页
Java贪吃蛇报告.docx_第5页
第5页 / 共28页
Java贪吃蛇报告.docx_第6页
第6页 / 共28页
Java贪吃蛇报告.docx_第7页
第7页 / 共28页
Java贪吃蛇报告.docx_第8页
第8页 / 共28页
Java贪吃蛇报告.docx_第9页
第9页 / 共28页
Java贪吃蛇报告.docx_第10页
第10页 / 共28页
Java贪吃蛇报告.docx_第11页
第11页 / 共28页
Java贪吃蛇报告.docx_第12页
第12页 / 共28页
Java贪吃蛇报告.docx_第13页
第13页 / 共28页
Java贪吃蛇报告.docx_第14页
第14页 / 共28页
Java贪吃蛇报告.docx_第15页
第15页 / 共28页
Java贪吃蛇报告.docx_第16页
第16页 / 共28页
Java贪吃蛇报告.docx_第17页
第17页 / 共28页
Java贪吃蛇报告.docx_第18页
第18页 / 共28页
Java贪吃蛇报告.docx_第19页
第19页 / 共28页
Java贪吃蛇报告.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java贪吃蛇报告.docx

《Java贪吃蛇报告.docx》由会员分享,可在线阅读,更多相关《Java贪吃蛇报告.docx(28页珍藏版)》请在冰点文库上搜索。

Java贪吃蛇报告.docx

Java贪吃蛇报告

RevisedfinaldraftNovember26,2020

 

Java贪吃蛇报告

《Java高级编程》课程报告

第xx小组:

贪吃蛇游戏项目

小组成员及分工

姓名

角色

负责功能

组长

设计与编码

测试

主要完成模式选择窗口和游戏主窗口菜单栏下拉菜单的设计与程序编写,贪吃蛇游戏界面布局,游戏的操作步骤设计。

程序的调试

主要完成游戏主窗口的设计与编程,设计贪吃蛇的移动方向键设置,得分规则等,以及最后程序的调试。

主要完成主菜单窗口的设计和程序编写,界面的设计布局,游戏主窗口界面背景设置,按钮的图片设置等。

一、实验环境

操作系统:

Windows7

编程环境:

Eclipse、JDK

二、实验内容与完成情况

(主要介绍项目总体功能分析与说明。

贪吃蛇小游戏的JAVA程序是利用上↑、下↓、左←、右→方向键来改变蛇的运动方向,按空键暂停游戏,按enter键重新开始。

长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏。

以不同的速度和不同方向吃到食物所获得的分数也不相同。

窗口功能说明:

设计了三个窗口,分别是游戏主窗口,主菜单窗口,模式选择窗口。

菜单栏分别为:

游戏菜单(重新开始)和帮助菜单以及返回(返回主菜单)。

其中,按返回菜单按钮后会显示主菜单,其包括游戏开始、设置、退出游戏三项按钮选择;如果按“设置”按钮会进入“模式选择”窗口。

而模式选择窗口菜单包括了初级、中级、高级、返回按钮。

1、功能1(主菜单窗口)

(1)主菜单窗口主要是提供“游戏开始”、“设置”和“退出”按钮。

“游戏开始”按钮按下后会进入“游戏主窗口”开始游戏;“设置”按钮是调用“模式选择”窗口对游戏贪吃蛇的速度进行设置;“退出”按钮按下则会直接退出游戏。

(2)功能1实现的流程图

实现的效果图如下:

(3)功能1(主菜单窗口)代码:

packageSwing;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

publicclasssetMenuextendsJFrame{

privateintspeed1=200;

publicstaticintspeed=200;

//staticintspeed=20;

privateJPanelcontentPane;

/**

*Launchtheapplication.

*/

publicstaticvoidmain(String[]args){

EventQueue.invokeLater(newRunnable(){

publicvoidrun(){

try{

setMenuframe=newsetMenu(speed);

frame.SsetMenu(frame);

frame.setVisible(true);

}catch(Exceptione){

e.printStackTrace();

}

}

});

}

/**

*Createtheframe.

*/

publicsetMenu(intspeed2){

speed1=speed2;

(speed2);

}

publicvoidSsetMenu(finalsetMenuframe){

setTitle("主菜单");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100,100,250,350);

contentPane=newJPanel();

contentPane.setBackground(newColor(102,204,102));

contentPane.setBorder(newEmptyBorder(5,5,5,5));

setContentPane(contentPane);

contentPane.setLayout(null);

//按钮:

游戏开始

JButtonNewGameButton=newJButton("");

NewGameButton.setIcon(newImageIcon("img/gamebegin.png"));

NewGameButton.setBounds(53,52,123,40);

NewGameButton.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

Gamegs=newGame(speed1);

frame.dispose();

}

});

contentPane.add(NewGameButton);

//按钮:

游戏设置

JButtonsetButton=newJButton("");

setButton.addMouseListener(newMouseAdapter(){

@Override

publicvoidmouseClicked(MouseEvente){

modelframe1=newmodel();

frame1.Mmodel(frame1);

frame1.setVisible(true);

frame.dispose();

}

});

//按钮图片设置

setButton.setIcon(newImageIcon("img/set.png"));

setButton.setBounds(53,128,123,45);

contentPane.add(setButton);

//按钮:

游戏推出

JButtonexitButton=newJButton("");

exitButton.setIcon(newImageIcon("img/exit.png"));

exitButton.setBounds(53,206,123,40);

exitButton.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

System.exit(0);

}

});

contentPane.add(exitButton);

}

}

2、功能2(模式选择窗口)

(1)功能2的文字描述:

“模式选择”窗口菜单包括了初级、中级、高级、返回按钮。

其中当选择按下初级、中级、高级按钮后,会弹出一个“游戏难度“窗口,并提示设置成功:

**,并按下”确定“按钮后窗口关闭同时模式选择成功,按下”返回“按钮返回主菜单窗口。

(2)功能2(模式选择窗口)实现的流程图

实现的效果图如下:

(3)功能2(模式选择窗口)代码:

packageSwing;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

publicclasssetMenuextendsJFrame{

privateintspeed1=200;

publicstaticintspeed=200;

//staticintspeed=20;

privateJPanelcontentPane;

/**

*Launchtheapplication.

*/

publicstaticvoidmain(String[]args){

EventQueue.invokeLater(newRunnable(){

publicvoidrun(){

try{

setMenuframe=newsetMenu(speed);

frame.SsetMenu(frame);

frame.setVisible(true);

}catch(Exceptione){

e.printStackTrace();

}

}

});

}

/**

*Createtheframe.

*/

publicsetMenu(intspeed2){

speed1=speed2;

System.out.println(speed2);

}

publicvoidSsetMenu(finalsetMenuframe){

setTitle("主菜单");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100,100,250,350);

contentPane=newJPanel();

contentPane.setBackground(newColor(102,204,102));

contentPane.setBorder(newEmptyBorder(5,5,5,5));

setContentPane(contentPane);

contentPane.setLayout(null);

//按钮:

游戏开始

JButtonNewGameButton=newJButton("");

NewGameButton.setIcon(newImageIcon("img/gamebegin.png"));

NewGameButton.setBounds(53,52,123,40);

NewGameButton.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

Gamegs=newGame(speed1);

frame.dispose();

}

});

contentPane.add(NewGameButton);

//按钮:

游戏设置

JButtonsetButton=newJButton("");

setButton.addMouseListener(newMouseAdapter(){

@Override

publicvoidmouseClicked(MouseEvente){

modelframe1=newmodel();

frame1.Mmodel(frame1);

frame1.setVisible(true);

frame.dispose();

}

});

//按钮图片设置

setButton.setIcon(newImageIcon("img/set.png"));

setButton.setBounds(53,128,123,45);

contentPane.add(setButton);

//按钮:

游戏推出

JButtonexitButton=newJButton("");

exitButton.setIcon(newImageIcon("img/exit.png"));

exitButton.setBounds(53,206,123,40);

exitButton.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

System.exit(0);

}

});

contentPane.add(exitButton);

}

}

3、功能3(贪吃蛇游戏窗口)

(1)能3(贪吃蛇游戏窗口)文字描述:

贪吃蛇游戏窗口界面包括蛇体与食物游戏区域,正上方有即时计分框(记录目前所得的分数),左上角有三个下拉菜单选项包括“菜单”下拉菜单,“帮助”菜单,“返回”菜单。

点击“菜单”菜单会出现下拉的“重新开始”选项同时也可以按下Enter键重新开始游戏;点击“帮助”菜单会出现“游戏说明”选项,点击进入后出现游戏帮助信息;点击“返回”菜单则直接返回主菜单选择窗口。

贪吃蛇游戏窗口大小是固定的目的是确定并设置当蛇体碰触到边框后提示游戏失败的出框,在规定的窗口范围内蛇体可以通过按上↑、下↓、左←、右→方向键控制其运动方向;在吃到界面区域中出现的食物后蛇体会变长,而以不同的速度和运动长度(UP和DOWN是偶数,RIGHT和LEFT是奇数)所得到的分数也不一样。

按空键游戏暂停,按Enter键游戏重新开始。

(2)功能3现的流程图:

(3)功能3(贪吃蛇游戏窗口)代码:

packageSwing;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

import;

//MainClass

publicclassGameextendsKeyAdapterimplementsImageObserver{

//初始速度

intspeed_all=200;

BufferedImagebgImage=null;

JFramemainFrame;

JPaneljPanel;

//CanvaspaintCanvas;

JLabellabelScore;//计分牌

SnakeModelsnakeModel=null;//蛇

publicstaticfinalintDEFAULT_WIDTH=500;

publicstaticfinalintDEFAULT_HEIGHT=400;

publicstaticfinalintnodeWidth=10;

publicstaticfinalintnodeHeight=10;

privateJMenuBarmenuBar;

privateJMenumenu;

privateJMenuItemmenuItem;

privateJMenuBarmenuBar_1;

privateJMenumnNewMenu;

privateJMenumnNewMenu_1;

privateJMenuItemmntmNewMenuItem;

privateJMenuItemmntmNewMenuItem_1;

privateJMenumnNewMenu_2;

//GreedSnake():

初始化游戏界面

publicGame(intspeed_gs){

speed_all=speed_gs;

("Game:

"+speed_all);

//设置界面元素

mainFrame=newJFrame("贪吃蛇游戏");

Containercp=mainFrame.getContentPane();

aoao(mainFrame);

jPanel=newJPanel();

jPanel.setPreferredSize(newDimension(DEFAULT_WIDTH-10,DEFAULT_HEIGHT-10));//500*390

//paintCanvas.setSize(DEFAULT_WIDTH+20,DEFAULT_HEIGHT+20);

jPanel.addKeyListener(this);

cp.add(jPanel,BorderLayout.CENTER);

//cp.add(paintCanvas,BorderLayout.CENTER);

JPanelpanelButtom=newJPanel();

panelButtom.setLayout(newBorderLayout());

cp.add(panelButtom,BorderLayout.SOUTH);

//score

labelScore=newJLabel("所得分数为:

",JLabel.CENTER);

mainFrame.getContentPane().add(labelScore,BorderLayout.NORTH);

mainFrame.addKeyListener(this);

mainFrame.pack();

mainFrame.setResizable(false);//设置窗口大小不能变化

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mainFrame.setVisible(true);

begin();

}

//keyPressed():

按键检测及菜单设置

publicvoidaoao(finalJFramemainFrame){

mainFrame.setJMenuBar(menuBar);

menuBar_1=newJMenuBar();

mainFrame.setJMenuBar(menuBar_1);

mnNewMenu=newJMenu("菜单");

menuBar_1.add(mnNewMenu);

mntmNewMenuItem=newJMenuItem("重新开始");

mntmNewMenuItem.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEventarg0){

Gamegs=newGame(speed_all);

mainFrame.dispose();

}

});

mnNewMenu.add(mntmNewMenuItem);

mnNewMenu_1=newJMenu("帮助");

mnNewMenu_1.addMouseListener(newMouseAdapter(){

@Override

publicvoidmouseClicked(MouseEvente){

snakeModel.changePauseState();

}

});

menuBar_1.add(mnNewMenu_1);

mntmNewMenuItem_1=newJMenuItem("游戏说明");

mntmNewMenuItem_1.addActionListener(newActionListener(){

//游戏说明响应时间

publicvoidactionPerformed(ActionEventarg0){

JOptionPane.showMessageDialog(null,"按→←↑↓控制方向,空格键暂停,Enter键重新开始","游戏帮助",JOptionPane.INFORMATION_MESSAGE);

}

});

mnNewMenu_1.add(mntmNewMenuItem_1);

mnNewMenu_2=newJMenu("返回");

mnNewMenu_2.addMouseListener(newMouseAdapter()

{//连接主菜单

@Override

publicvoidmouseClicked(MouseEventarg0){

setMenuframe123=newsetMenu(speed_all);

frame123.SsetMenu(frame123);

frame123.setVisible(true);

mainFrame.dispose();

//("123456");

}

});

menuBar_1.add(mnNewMenu_2);

}

//键盘响应时间设置

publicvoidkeyPressed(KeyEvente){

intkeyCode=e.getKeyCode();

if(snakeModel.running)

switch(keyCode){

caseKeyEvent.VK_UP:

snakeModel.changeDirection(SnakeModel.UP);

break;

caseKeyEvent.VK_DOWN:

snakeModel.changeDirection(SnakeModel.DOWN);

break;

caseKeyEvent.VK_LEFT:

snakeModel.changeDirection(SnakeModel.LEFT);

break;

caseKeyEvent.VK_RIGHT:

snakeModel.changeDirection(SnakeModel.RIGHT);

break;

caseKeyEvent.VK_ADD:

caseKeyEvent.VK_PAGE_UP:

snakeModel.speedUp();//加速

break;

caseKeyEvent.VK_SUBTRACT:

caseKeyEvent.VK_PAGE_DOWN:

snakeModel.speedDown();//减速

break;

caseKeyEvent.VK_SPACE:

caseKeyEven

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2