ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:101.38KB ,
资源ID:13744310      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13744310.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java贪吃蛇报告.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Java贪吃蛇报告.docx

1、Java贪吃蛇报告 Revised final draft November 26, 2020Java贪吃蛇报告Java高级编程课程报告第xx小组:贪吃蛇游戏项目小组成员及分工姓名角色负责功能组长设计与编码测试主要完成模式选择窗口和游戏主窗口菜单栏下拉菜单的设计与程序编写,贪吃蛇游戏界面布局,游戏的操作步骤设计。程序的调试主要完成游戏主窗口的设计与编程,设计贪吃蛇的移动方向键设置,得分规则等,以及最后程序的调试。主要完成主菜单窗口的设计和程序编写,界面的设计布局,游戏主窗口界面背景设置,按钮的图片设置等。一、实验环境操作系统:Windows 7编程环境:Eclipse、JDK二、实验内容与完成

2、情况(主要介绍项目总体功能分析与说明。)贪吃蛇小游戏的JAVA程序是利用上 、下 、左、右 方向键来改变蛇的运动方向,按空键暂停游戏,按enter键重新开始。长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏。以不同的速度和不同方向吃到食物所获得的分数也不相同。窗口功能说明:设计了三个窗口,分别是游戏主窗口,主菜单窗口,模式选择窗口。菜单栏分别为:游戏菜单(重新开始)和帮助菜单以及返回(返回主菜单)。其中,按返回菜单按钮后会显示主菜单,其包括游戏开始、设置、退出游戏三项按钮选择;如果按“设置”按钮会进入“模式选择”窗口。

3、而模式选择窗口菜单包括了初级、中级、高级、返回按钮。1、功能1(主菜单窗口)(1)主菜单窗口主要是提供“游戏开始”、“设置”和“退出”按钮。“游戏开始”按钮按下后会进入“游戏主窗口”开始游戏; “设置”按钮是调用“模式选择”窗口对游戏贪吃蛇的速度进行设置; “退出”按钮按下则会直接退出游戏。(2)功能1实现的流程图实现的效果图如下:(3)功能1(主菜单窗口)代码:package Swing;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;public class se

4、tMenu extends JFrame private int speed1 = 200;public static int speed = 200;/ static int speed = 20; private JPanel contentPane; /* * Launch the application. */ public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try setMenu frame = new setMenu(speed); frame.

5、SsetMenu(frame); frame.setVisible(true); catch (Exception e) e.printStackTrace(); ); /* * Create the frame. */ public setMenu(int speed2) speed1=speed2; (speed2); public void SsetMenu(final setMenu frame) setTitle(主菜单); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 250, 350); c

6、ontentPane = new JPanel(); contentPane.setBackground(new Color(102, 204, 102); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5); setContentPane(contentPane); contentPane.setLayout(null); /按钮:游戏开始 JButton NewGameButton = new JButton(); NewGameButton.setIcon(new ImageIcon(img/gamebegin.png); NewGameB

7、utton.setBounds(53, 52, 123, 40); NewGameButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) Game gs = new Game(speed1); frame.dispose(); ); contentPane.add(NewGameButton); /按钮:游戏设置 JButton setButton = new JButton(); setButton.addMouseListener(new MouseAdapter()

8、Override public void mouseClicked(MouseEvent e) model frame1 = new model(); frame1.Mmodel(frame1); frame1.setVisible(true); frame.dispose(); ); /按钮图片设置 setButton.setIcon(new ImageIcon(img/set.png); setButton.setBounds(53, 128, 123, 45); contentPane.add(setButton); /按钮:游戏推出 JButton exitButton= new JB

9、utton(); exitButton.setIcon(new ImageIcon(img/exit.png); exitButton.setBounds(53, 206, 123, 40); exitButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0); ); contentPane.add(exitButton); 2、功能2(模式选择窗口)(1)功能2的文字描述:“模式选择”窗口菜单包括了初级、中级、高级、返回按钮。其中当选择按下初级、

10、中级、高级按钮后,会弹出一个“游戏难度“窗口,并提示设置成功:*,并按下”确定“按钮后窗口关闭同时模式选择成功,按下”返回“按钮返回主菜单窗口。(2)功能2(模式选择窗口)实现的流程图实现的效果图如下:(3)功能2(模式选择窗口)代码: package Swing;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;public class setMenu extends JFrame private int speed1 = 200;public static int

11、speed = 200;/ static int speed = 20; private JPanel contentPane; /* * Launch the application. */ public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try setMenu frame = new setMenu(speed); frame.SsetMenu(frame); frame.setVisible(true); catch (Exception e) e.p

12、rintStackTrace(); ); /* * Create the frame. */ public setMenu(int speed2) speed1=speed2; System.out.println(speed2); public void SsetMenu(final setMenu frame) setTitle(主菜单); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 250, 350); contentPane = new JPanel(); contentPane.setBack

13、ground(new Color(102, 204, 102); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5); setContentPane(contentPane); contentPane.setLayout(null); /按钮:游戏开始 JButton NewGameButton = new JButton(); NewGameButton.setIcon(new ImageIcon(img/gamebegin.png); NewGameButton.setBounds(53, 52, 123, 40); NewGameButto

14、n.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) Game gs = new Game(speed1); frame.dispose(); ); contentPane.add(NewGameButton); /按钮:游戏设置 JButton setButton = new JButton(); setButton.addMouseListener(new MouseAdapter() Override public void mouseClicked(MouseEvent e

15、) model frame1 = new model(); frame1.Mmodel(frame1); frame1.setVisible(true); frame.dispose(); ); /按钮图片设置 setButton.setIcon(new ImageIcon(img/set.png); setButton.setBounds(53, 128, 123, 45); contentPane.add(setButton); /按钮:游戏推出 JButton exitButton= new JButton(); exitButton.setIcon(new ImageIcon(img/

16、exit.png); exitButton.setBounds(53, 206, 123, 40); exitButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0); ); contentPane.add(exitButton); 3、功能3(贪吃蛇游戏窗口)(1)能3(贪吃蛇游戏窗口)文字描述:贪吃蛇游戏窗口界面包括蛇体与食物游戏区域,正上方有即时计分框(记录目前所得的分数),左上角有三个下拉菜单选项包括“菜单”下拉菜单,“帮助”菜单,“返回

17、”菜单。点击“菜单”菜单会出现下拉的“重新开始”选项同时也可以按下Enter键重新开始游戏;点击“帮助”菜单会出现“游戏说明”选项,点击进入后出现游戏帮助信息;点击“返回”菜单则直接返回主菜单选择窗口。贪吃蛇游戏窗口大小是固定的目的是确定并设置当蛇体碰触到边框后提示游戏失败的出框,在规定的窗口范围内蛇体可以通过按上 、下 、左、右 方向键控制其运动方向;在吃到界面区域中出现的食物后蛇体会变长,而以不同的速度和运动长度(UP和DOWN是偶数,RIGHT和LEFT是奇数)所得到的分数也不一样。按空键游戏暂停,按Enter键游戏重新开始。(2)功能3现的流程图:(3)功能3(贪吃蛇游戏窗口)代码:

18、package Swing;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 ;/Main Classpublic class Game extends KeyAdapter implements Ima

19、geObserver /初始速度 int speed_all = 200; BufferedImage bgImage=null; JFrame mainFrame; JPanel jPanel; / Canvas paintCanvas; JLabel labelScore;/ 计分牌 SnakeModel snakeModel = null;/ 蛇 public static final int DEFAULT_WIDTH = 500; public static final int DEFAULT_HEIGHT = 400; public static final int nodeWid

20、th = 10; public static final int nodeHeight = 10; private JMenuBar menuBar; private JMenu menu; private JMenuItem menuItem; private JMenuBar menuBar_1; private JMenu mnNewMenu; private JMenu mnNewMenu_1; private JMenuItem mntmNewMenuItem; private JMenuItem mntmNewMenuItem_1; private JMenu mnNewMenu_

21、2; / GreedSnake():初始化游戏界面 public Game(int speed_gs) speed_all=speed_gs; (Game:+speed_all); / 设置界面元素 mainFrame = new JFrame(贪吃蛇游戏); Container cp = mainFrame.getContentPane(); aoao(mainFrame); jPanel = new JPanel(); jPanel.setPreferredSize(new Dimension(DEFAULT_WIDTH-10, DEFAULT_HEIGHT-10 );/500*390 /

22、 paintCanvas.setSize(DEFAULT_WIDTH + 20, DEFAULT_HEIGHT + 20); jPanel.addKeyListener(this); cp.add(jPanel, BorderLayout.CENTER); / cp.add(paintCanvas, BorderLayout.CENTER); JPanel panelButtom = new JPanel(); panelButtom.setLayout(new BorderLayout(); cp.add(panelButtom, BorderLayout.SOUTH); /score la

23、belScore = new JLabel(所得分数为:, 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(); /

24、keyPressed():按键检测及菜单设置 public void aoao(final JFrame mainFrame) mainFrame.setJMenuBar(menuBar); menuBar_1 = new JMenuBar(); mainFrame.setJMenuBar(menuBar_1); mnNewMenu = new JMenu(菜单); menuBar_1.add(mnNewMenu); mntmNewMenuItem = new JMenuItem(重新开始); mntmNewMenuItem.addActionListener(new ActionListen

25、er() public void actionPerformed(ActionEvent arg0) Game gs = new Game(speed_all); mainFrame.dispose(); ); mnNewMenu.add(mntmNewMenuItem); mnNewMenu_1 = new JMenu(帮助); mnNewMenu_1.addMouseListener(new MouseAdapter() Override public void mouseClicked(MouseEvent e) snakeModel.changePauseState(); ); men

26、uBar_1.add(mnNewMenu_1); mntmNewMenuItem_1 = new JMenuItem(游戏说明); mntmNewMenuItem_1.addActionListener(new ActionListener() /游戏说明响应时间 public void actionPerformed(ActionEvent arg0) JOptionPane.showMessageDialog(null, 按 控制方向,空格键暂停,Enter键重新开始, 游戏帮助, JOptionPane.INFORMATION_MESSAGE); ); mnNewMenu_1.add(m

27、ntmNewMenuItem_1); mnNewMenu_2 = new JMenu(返回); mnNewMenu_2.addMouseListener(new MouseAdapter() /连接主菜单 Override public void mouseClicked(MouseEvent arg0) setMenu frame123 = new setMenu(speed_all); frame123.SsetMenu(frame123); frame123.setVisible(true); mainFrame.dispose(); /(123456); ); menuBar_1.ad

28、d(mnNewMenu_2); /键盘响应时间设置 public void keyPressed(KeyEvent e) int keyCode = e.getKeyCode(); if (snakeModel.running) switch (keyCode) case KeyEvent.VK_UP: snakeModel.changeDirection(SnakeModel.UP); break; case KeyEvent.VK_DOWN: snakeModel.changeDirection(SnakeModel.DOWN); break; case KeyEvent.VK_LEFT:

29、 snakeModel.changeDirection(SnakeModel.LEFT); break; case KeyEvent.VK_RIGHT: snakeModel.changeDirection(SnakeModel.RIGHT); break; case KeyEvent.VK_ADD: case KeyEvent.VK_PAGE_UP: snakeModel.speedUp();/ 加速 break; case KeyEvent.VK_SUBTRACT: case KeyEvent.VK_PAGE_DOWN: snakeModel.speedDown();/ 减速 break; case KeyEvent.VK_SPACE: case KeyEven

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

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