JAVA课程设计连连看(含代码)
基于java的连连看游戏
基于JAVA的《连连看》游戏一引言《连连看》游戏在网上种类非常多,比如《水果连连看》,《宠物连连看》等等,虽然版本各种各样,但是其基本玩法,或者说基本算法是相同的,就是显示一些图标,让用户依次去点击两个图标,如果这两个图标相同,并且这两个图标通过直线可以相连,或者通过直角相连,或者通过双折线相连就可以消掉,消掉所有图标即为胜利。
如图1所示:图1 正在进行中的连连看游戏通过该游戏的制作,我们可以对Java的基础语法、Java图形界面以与简单的算法设计有一个比较全面的了解。
二设计要求为了避免叙述的繁琐,我们只实现连连看游戏的基本功能,如下:●制作如图1所示的游戏界面,尽量做到美观大方,使用方便●当两个图标相同,且通过直线相连、直角相连、双折线相连时,能够消掉图标●能够让游戏随时暂停,然后继续●当游戏进行到一定程度,无法消除剩余图标时,要能够提供重排功能对图标进行重排,从而让游戏继续进行三实现思路我们先讲一下程序中的几个难点,主要是说清楚具体的实现思路,具体的代码会在文后给出,大家可以参考。
1、界面设计需要实现如图2所示的界面:图 2 连连游戏界面整个界面分为三个区域:菜单区、功能区、游戏区。
首先在窗体上放置三个面板JPanel,分别存放三个区域,如图3所示:图3 界面的设计系统菜单区放置菜单即可,用户游戏区放置一个8*9的按钮数组来构成游戏界面,用户交互区放置开始,暂停等功能按钮以与提示信息。
2、生成游戏区运行程序后,游戏区并不显示按钮数组,当点击开始按钮后,再自动生成。
在生成按钮时要求按钮上的图案是随机的,且每个图案必须是偶数,否则会出现无法消除的按钮。
如何实现呢?我们可以这样考虑:假设有12个图片,把图片名字按照数字序号从0到11命名;假设游戏区共72个按钮,那么产生36个12以内的随机数字(每个随机数字代表一个图片),放入一个ArrayList中,最后使用ArrayList的addAll方法对已经产生的36个随机数字复制一份,这样就获得了72个随机数字,并且是成对的。
java课程设计报告连连看
java课程设计报告 连连看一、课程目标知识目标:1. 让学生掌握Java基础语法,包括变量声明、数据类型、运算符等。
2. 使学生了解面向对象编程的基本概念,如类、对象、继承、封装等。
3. 帮助学生掌握Java中常用类库和API的使用,如Array、ArrayList等。
4. 让学生学会运用Java编写图形用户界面(GUI)程序。
技能目标:1. 培养学生运用Java语言解决实际问题的能力,特别是在连连看游戏设计中的逻辑思维和编程技巧。
2. 提高学生分析问题、设计解决方案的能力,学会使用Java实现游戏的基本功能。
3. 培养学生团队合作精神,学会在项目中分工合作、共同推进项目进度。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发他们主动探索新技术、新方法的积极性。
2. 培养学生面对问题时的耐心和毅力,让他们体会到编程过程中的成就感。
3. 引导学生树立正确的价值观,认识到编程对于社会发展的重要性,激发他们为我国信息技术产业的发展贡献力量的责任感。
课程性质分析:本课程为Java编程课程设计,旨在通过实际项目——连连看游戏的设计与实现,巩固和拓展学生所学Java知识,提高编程实践能力。
学生特点分析:学生已具备一定的Java基础,了解基本语法和面向对象编程,但实际编程经验不足,需要通过本课程加强实践操作。
教学要求:1. 注重理论与实践相结合,引导学生将所学知识运用到实际项目中。
2. 鼓励学生积极参与讨论,培养解决问题的能力和团队合作精神。
3. 关注学生个体差异,提供个性化指导,确保每位学生都能在课程中取得进步。
二、教学内容1. Java基础语法回顾:变量声明、数据类型、运算符、控制流程(条件语句、循环语句)。
教材章节:第一章至第三章2. 面向对象编程:类与对象、构造方法、封装、继承、多态。
教材章节:第四章至第六章3. Java常用类库和API:String类、Array、ArrayList、泛型。
连连看游戏java课程设计
连连看游戏java课程设计一、课程目标知识目标:1. 理解Java语言中面向对象编程的基本概念,如类、对象、继承、封装等;2. 学会使用Java编写连连看游戏的界面布局和逻辑控制;3. 掌握运用Java集合框架处理游戏数据结构;4. 了解Java事件处理机制,并能应用于游戏交互。
技能目标:1. 能够运用面向对象的方法设计游戏类和对象,实现游戏功能;2. 独立编写连连看游戏的界面和逻辑代码,完成一个完整的Java游戏项目;3. 学会使用集合框架优化游戏数据存储和访问;4. 提高问题分析、程序设计和调试能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发创造力和创新能力;2. 培养学生合作学习、分享交流的良好习惯,提高团队协作能力;3. 强化学生的逻辑思维能力,提高解决实际问题的能力;4. 培养学生面对挑战时的积极态度,勇于克服困难,持续优化和完善自己的作品。
课程性质:本课程为信息技术学科选修课程,以项目为导向,注重实践操作和团队合作。
学生特点:学生具备一定的Java编程基础,对游戏开发有浓厚兴趣,具有较强的动手能力和创新能力。
教学要求:结合实际项目需求,引导学生运用所学知识解决问题,注重培养学生的编程能力和团队协作能力,提高学生的综合素质。
通过本课程的学习,使学生能够独立完成一个连连看游戏的Java课程设计。
二、教学内容1. 面向对象编程基础复习:复习Java中类与对象、继承、封装等基本概念,参考教材第二章。
2. 游戏界面设计:学习使用Java的Swing库设计连连看游戏界面,包括菜单、按钮、网格布局等,结合教材第四章。
- 界面组件及布局管理器;- 事件监听器和处理机制;- 图形和图标的使用。
3. 游戏逻辑实现:学习实现游戏核心逻辑,如数据结构设计、游戏规则、配对消除等,参考教材第六章。
- 集合框架的使用;- 算法实现(如查找、排序);- 游戏流程控制。
4. 游戏对象设计:设计游戏中的对象类,如卡片类、游戏引擎类等,运用封装、继承等面向对象原则,参考教材第三章。
java小游戏连连看源代码
JAVA小游戏报告院别电子信息工程专业计算机科学与技术班级01班学号121040210116姓名姚银杰西安思源学院教务处制二零一四年连连看java源代码import javax.swing.*;import java.awt.*;import java.awt.event.*;public class lianliankan implements ActionListener{JFrame mainFrame; //主面板Container thisContainer;JPanel centerPanel,southPanel,northPanel; //子面板JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮JLabel fractionLable=new JLabel("0"); //分数标签JButton firstButton,secondButton; //分别记录两次被选中的按钮int grid[][] = new int[8][7];//储存游戏按钮位置static boolean pressInformation=false; //判断是否有按钮被选中int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标int i,j,k,n;//消除方法控制public void init(){mainFrame=new JFrame("JKJ连连看");thisContainer = mainFrame.getContentPane();thisContainer.setLayout(new BorderLayout());centerPanel=new JPanel();southPanel=new JPanel();northPanel=new JPanel();thisContainer.add(centerPanel,"Center");thisContainer.add(southPanel,"South");thisContainer.add(northPanel,"North");centerPanel.setLayout(new GridLayout(6,5));for(int cols = 0;cols < 6;cols++){for(int rows = 0;rows < 5;rows++ ){diamondsButton[cols][rows]=new JButton(String.valueOf(grid[cols+1][rows+1])); diamondsButton[cols][rows].addActionListener(this);centerPanel.add(diamondsButton[cols][rows]);}exitButton=new JButton("退出");exitButton.addActionListener(this);resetButton=new JButton("重列");resetButton.addActionListener(this);newlyButton=new JButton("再来一局");newlyButton.addActionListener(this);southPanel.add(exitButton);southPanel.add(resetButton);southPanel.add(newlyButton);fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText()))); northPanel.add(fractionLable);mainFrame.setBounds(280,100,500,450);mainFrame.setVisible(true);}public void randomBuild() {int randoms,cols,rows;for(int twins=1;twins<=15;twins++) {randoms=(int)(Math.random()*25+1);for(int alike=1;alike<=2;alike++) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=randoms;}}}public void fraction(){fractionLable.setText(String.valueOf(Integer.parseInt(fractionLable.getText())+100)); }public void reload() {int save[] = new int[30];int n=0,cols,rows;int grid[][]= new int[8][7];for(int i=0;i<=6;i++) {for(int j=0;j<=5;j++) {if(this.grid[i][j]!=0) {save[n]=this.grid[i][j];n++;}}n=n-1;this.grid=grid;while(n>=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);while(grid[cols][rows]!=0) {cols=(int)(Math.random()*6+1);rows=(int)(Math.random()*5+1);}this.grid[cols][rows]=save[n];n--;}mainFrame.setVisible(false);pressInformation=false; //这里一定要将按钮点击信息归为初始init();for(int i = 0;i < 6;i++){for(int j = 0;j < 5;j++ ){if(grid[i+1][j+1]==0)diamondsButton[i][j].setVisible(false);}}}public void estimateEven(int placeX,int placeY,JButton bz) {if(pressInformation==false) {x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;pressInformation=true;}else {x0=x;y0=y;fristMsg=secondMsg;firstButton=secondButton;x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;if(fristMsg==secondMsg。
数字连连看java课程设计
数字连连看java课程设计一、课程目标知识目标:1. 让学生理解Java语言中数组的基础知识,掌握其使用方法;2. 学会使用Java编写简单的图形用户界面(GUI)程序;3. 掌握数字连连看游戏的逻辑设计,理解其算法实现。
技能目标:1. 能够运用Java数组存储和处理数字连连看游戏数据;2. 独立编写数字连连看游戏的代码,实现游戏的基本功能;3. 学会使用Java Swing组件设计游戏界面,提高编程实践能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发他们学习Java的热情;2. 培养学生团队协作能力,学会与他人共同解决问题;3. 培养学生面对挑战时的积极态度,提高克服困难的信心。
课程性质:本课程为实践性较强的编程课程,通过数字连连看游戏的设计与实现,帮助学生巩固Java基础知识,提高编程实践能力。
学生特点:本课程针对具有一定Java基础知识的初中生,他们对编程有一定兴趣,善于观察和思考,但可能缺乏实际编程经验。
教学要求:课程应注重理论与实践相结合,以学生为主体,引导学生主动探究,培养他们解决问题的能力。
教学过程中,注重分层教学,关注学生个体差异,确保每个学生都能在原有基础上得到提高。
通过课程学习,使学生在知识、技能和情感态度价值观方面取得具体的学习成果。
二、教学内容1. Java数组的基本概念与使用方法,包括数组的声明、初始化和访问;2. Java Swing图形用户界面编程基础,如JFrame、JPanel、JButton等组件的使用;3. 数字连连看游戏逻辑设计,涵盖游戏规则、数据存储、匹配算法等;4. 编程实现数字连连看游戏,包括界面设计、事件处理、游戏流程控制等。
教学内容安排:第一课时:复习Java数组知识,介绍数字连连看游戏规则;第二课时:学习Java Swing组件,设计数字连连看游戏界面;第三课时:编写数字连连看游戏逻辑,实现基本功能;第四课时:优化游戏代码,进行测试与调试。
JAVA连连看课程设计报告
滨江学院实验报告||实验名称JAVA小游戏(连连看)设计课程名称智能手机程序设计| |专业班级:信息工程1班学生姓名:车宇翔学号:20112309002指导教师:高超学期:2013-2014(2)成绩:【选题背景】:连连看游戏经验,玩法简单,休闲,益智,趣味,广受欢迎。
【选题目的】:学会JAVA程序开发的环境搭建与配置,并在实际运用中学习和掌握JAVA程序开发的全过程。
进一步熟悉掌握JAVA程序设计语音的基础内容,如用户图形界面设计、JAVA多线程编程、JAVA数据库编程等。
通过亲自动手写程序,拓展知识面,锻炼调试能力。
【系统分析与设计】:功能分析:实现连连看的基本游戏功能和重置、提示、消除功能设计:通过对图片的调用以及设置是否可见来完成连连看的效果【课程设计中碰到的问题及解决方案】:1.不知道如何进行对数组中两个元素是否可以消除的判断2.时间条的动态表现解决方案:1.对每个相同图案进行循环判断,直到找出满足条件的情况boolean verticalMatch(Point a, Point b) // 竖线上的判断boolean horizonMatch(Point a, Point b) // 横线上的判断2.为了保证动画过程和游戏过程的平行运行,因此将动画分离成一个独立的控件,并且要保证动画有自己单独的线程来运行。
当每次用户的分数发生变化时,我们可以使用setScore(int l, int c) 方法同步分数显示的动画效果。
【程序输出结果】:游戏开始【程序代码】:ImageFactorypackage nicholas.game.kyodai;import javax.swing.ImageIcon;import .*;public class ImageFactory {private static ImageFactory imagefactory;private static ImageIcon images[];private ImageFactory() {images = new ImageIcon[54];URLClassLoader loader = (URLClassLoader)getClass().getClassLoader();for(int i=0;i<39;i++) {images[i] = new ImageIcon(getClass().getResource("images/"+i+".gif"));}images[39] = new ImageIcon(getClass().getResource("images/dots.gif"));images[40] = new ImageIcon(getClass().getResource("images/ico.gif"));images[41] = new ImageIcon(getClass().getResource("images/topbar.gif"));images[42] = new ImageIcon(getClass().getResource("images/splash.gif"));images[43] = new ImageIcon(getClass().getResource("images/sico.gif"));}public ImageIcon getImageicon(int i) {return images[i];}public static synchronized ImageFactory getInstance() {if(imagefactory != null) {return imagefactory;} else {imagefactory = new ImageFactory();return imagefactory;}}}KyodaiGridpackage nicholas.game.kyodai;import java.awt.*;import javax.swing.*;public class KyodaiGrid extends JLabel {private int xpos;private int ypos;public KyodaiGrid(int x, int y) {xpos = x;ypos = y;this.setHorizontalAlignment(SwingConstants.CENTER);}public int getXpos() {return xpos;}public int getYpos() {return ypos;}public boolean isPassable() {return !isVisible();}}LevelInfopackage nicholas.game.kyodai;import java.io.Serializable;public class LevelInfo implements Serializable {//xBound为行号,yBound为列号private int xBound;private int yBound;public LevelInfo() {xBound = 16;yBound = 9;}public LevelInfo(int x, int y){xBound = x;yBound = y;}public int getXBound() {return xBound;}public int getYBound() {return yBound;}}MainFrame.javapackage nicholas.game.kyodai;import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import nicholas.swing.AboutDialog;import nicholas.swing.JSplashWindow;public class MainFrame extends JFrame implements ActionListener {private JMenuItem aboutItem;//菜单栏private JMenuItem exitItem;private JMenuItem startItem;private JMenuItem optionItem;private JMenuItem tipItem;private JMenuItem refreshItem;private JMenuItem logItem;private JMenuItem bombItem;private JMenuItem pauseItem;private MainPanel mainPanel;//完成主要功能private LevelInfo levelInfo;public MainFrame() {super("连连看");levelInfo = new LevelInfo();//设定游戏大小setMenuBar();//设置菜单setUI();setIconImage(ImageFactory.getInstance().getImageicon(43).getImage());setSize(650,520);Dimension screen = getToolkit().getScreenSize();setLocation((screen.width-getSize().width)/2,(screen.height-getSize().height)/2);this.setVisible(true);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}private void setMenuBar() {JMenu fileMenu = new JMenu("游戏(G)");JMenu helpMenu = new JMenu("帮助(H)");JMenu contMenu = new JMenu("辅助(C)");fileMenu.setMnemonic('G');helpMenu.setMnemonic('H');contMenu.setMnemonic('C');startItem = new JMenuItem("开局(N)");startItem.setMnemonic('N');startItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2,0));pauseItem = new JMenuItem("暂停(P)");pauseItem.setMnemonic('P');pauseItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_PAUSE,0));refreshItem = new JMenuItem("刷新(R)");refreshItem.setMnemonic('R');refreshItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));tipItem = new JMenuItem("提示(T)");tipItem.setMnemonic('T');tipItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));optionItem = new JMenuItem("选项(O)...");optionItem.setMnemonic('O');logItem = new JMenuItem("排行榜(B)...");logItem.setMnemonic('B');exitItem = new JMenuItem("退出(X)");exitItem.setMnemonic('X');aboutItem = new JMenuItem("关于(A)...");aboutItem.setMnemonic('A');aboutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));bombItem = new JMenuItem("炸弹(M)");bombItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,0));bombItem.setMnemonic('M');startItem.addActionListener(this);pauseItem.addActionListener(this);refreshItem.addActionListener(this);tipItem.addActionListener(this);optionItem.addActionListener(this);logItem.addActionListener(this);exitItem.addActionListener(this);aboutItem.addActionListener(this);bombItem.addActionListener(this);fileMenu.add(startItem);fileMenu.add(pauseItem);contMenu.add(refreshItem);contMenu.add(bombItem);contMenu.add(tipItem);fileMenu.addSeparator();fileMenu.add(exitItem);helpMenu.add(aboutItem);helpMenu.add(contMenu);JMenuBar bar = new JMenuBar();bar.add(fileMenu);bar.add(helpMenu);setJMenuBar(bar);}private void setUI() {mainPanel = new MainPanel(levelInfo);getContentPane().add(mainPanel,BorderLayout.CENTER); }public static void main(String args[]) {MainFrame application = new MainFrame();}private void showAboutDialog() {String s1="作者:车宇翔";String s2="邮箱: 531608022@";String s3="Have Fun!!";TextArea ta=new TextArea();ta.setText(s1+"\n"+"\n"+"\n"+s2+"\n"+"\n"+"\n"+s3);ta.setEditable(false);JFrame f=new JFrame("关于");f.setLocation(300, 300);f.setSize(200,200);f.add(ta);f.setBackground(new Color(200,120,150));f.setResizable(false);f.setVisible(true);}public void actionPerformed(ActionEvent ae) { if(ae.getSource()==startItem) {mainPanel.restart();} else if(ae.getSource()==pauseItem) {mainPanel.setPaused(!mainPanel.isPaused());} else if(ae.getSource()==exitItem) {System.exit(0);} else if(ae.getSource()==aboutItem) {showAboutDialog();} else if(ae.getSource()==bombItem) {eBomb();} else if(ae.getSource()==refreshItem) {mainPanel.refresh();} else if(ae.getSource()==tipItem) {mainPanel.showNext();}}}MainPanel.javapackage nicholas.game.kyodai;import java.awt.*;import java.awt.event.*;import java.util.Vector;import javax.swing.*;import javax.swing.border.Border;import nicholas.game.kyodai.*;public class MainPanel extends JPanel {private int BOMB = 5;private int BOMBP = 200;private int REFRESH = 4;private int REFRP = 250;private int TIP = 7;private int TIPP = 120;private int PROGRESS = 1200;private int xBound;private int yBound;private int pcount;private int score;private int refreshcount;private int bombcount;private int tipcount;private LevelInfo levelInfo; private GridMouseAdapter gma; private KyodaiGrid grid[][]; private KyodaiGrid nexts, nexte;private Border selectedBorder; private Border opaqueBorder; private Border tipBorder;private Vector path[];private Thread pthread;private JProgressBar progress; private JLabel scoreLabel; private JLabel refreshLabel; private JLabel bombLabel;private JLabel tipLabel;private JPanel gridPanel;private boolean wingame;public MainPanel(LevelInfo li) {super(new BorderLayout());levelInfo = li;path = new Vector[3];path[0] = new Vector();path[1] = new Vector();path[2] = new Vector();setBackground(Color.black);gma = new GridMouseAdapter();opaqueBorder = BorderFactory.createLineBorder(getBackground());//selectedBorder = BorderFactory.createLineBorder(Color.red);selectedBorder = BorderFactory.createLineBorder(Color.red);tipBorder = BorderFactory.createLineBorder(Color.green);setGridPanel();setStatusPanel();}/***设置状态面板*/private void setStatusPanel() {wingame = false;JPanel panel = new JPanel();panel.setBackground(Color.black);JLabel label = new JLabel("剩余时间:");label.setForeground(Color.white);panel.add(label);progress = new JProgressBar(0,PROGRESS);//时间条显示progress.setValue(PROGRESS);progress.setPreferredSize(new Dimension(400,20));progress.setForeground(Color.blue);progress.setBorderPainted(false);panel.add(progress);score = 0;scoreLabel = new JLabel(""+score);scoreLabel.setForeground(Color.yellow);scoreLabel.setFont(new Font("Dialog",Font.BOLD,25));scoreLabel.setHorizontalAlignment(SwingConstants.RIGHT);scoreLabel.setPreferredSize(new Dimension(100,20));panel.add(scoreLabel);add(panel,BorderLayout.NORTH);panel = new JPanel();panel.setBackground(Color.black);label = new JLabel("剩余提示:");label.setForeground(Color.yellow);panel.add(label);tipcount = TIP;tipLabel = new JLabel(""+tipcount);tipLabel.setForeground(Color.green);panel.add(tipLabel);label = new JLabel("剩余炸弹:");label.setForeground(Color.yellow);panel.add(label);bombcount = BOMB;bombLabel = new JLabel(""+bombcount);bombLabel.setForeground(Color.green);panel.add(bombLabel);label = new JLabel("可用刷新:");label.setForeground(Color.yellow);panel.add(label);refreshcount = REFRESH;refreshLabel = new JLabel(""+refreshcount);refreshLabel.setForeground(Color.green);panel.add(refreshLabel);add(panel,BorderLayout.SOUTH);pthread = new ProgressThread();pthread.start();}private void setGridPanel() {//完成布局gridPanel = new JPanel();gridPanel.setBackground(getBackground());xBound = levelInfo.getXBound()+2;yBound = levelInfo.getYBound()+2;gridPanel.setLayout(new GridLayout(yBound,xBound,0,0));grid = new KyodaiGrid[yBound][xBound];int count = 0;int sub = levelInfo.getXBound()*levelInfo.getYBound()/4;KyodaiGrid temp[] = new KyodaiGrid[xBound*yBound];for(int y=0;y<yBound;y++) {for(int x=0;x<xBound;x++) {grid[y][x] = new KyodaiGrid(x, y);if(x==0||x==(xBound-1)||y==0||y==(yBound-1)) {grid[y][x].setIcon(ImageFactory.getInstance().getImageicon(39));grid[y][x].setVisible(false);} else {grid[y][x].setIcon(ImageFactory.getInstance().getImageicon(count%sub));grid[y][x].setBorder(opaqueBorder);grid[y][x].addMouseListener(gma);temp[count] = grid[y][x];count++;}gridPanel.add(grid[y][x]);}}JPanel t = new JPanel();t.setBackground(Color.black);t.add(gridPanel);add(t,BorderLayout.CENTER);shuffle(temp, count);}/***开始新游戏*/public void restart() {//重新开始resetStatusPanel();resetGridPanel();}/***重置面板状态和游戏图标*/private void resetStatusPanel() {wingame = false;score = 0;scoreLabel.setText(""+score);bombcount = BOMB;bombLabel.setText(""+bombcount);refreshcount = REFRESH;refreshLabel.setText(""+refreshcount);tipcount = TIP;tipLabel.setText(""+tipcount);progress.setValue(PROGRESS);pthread.resume();}private void resetGridPanel() {int count = 0;int sub = (xBound-2)*(yBound-2)/4;KyodaiGrid temp[] = new KyodaiGrid[xBound*yBound];for(int y=1;y<yBound-1;y++) {for(int x=1;x<xBound-1;x++){grid[y][x].setIcon(ImageFactory.getInstance().getImageicon(count%sub));grid[y][x].setBorder(opaqueBorder);grid[y][x].setVisible(true);temp[count] =grid[y][x];count++;}}shuffle(temp,count);}/***暂停*/public void setPaused(boolean p) {if(p) {pthread.suspend();gridPanel.setVisible(false);} else {pthread.resume();gridPanel.setVisible(true);}}/***是否暂停*/public boolean isPaused() {return !gridPanel.isVisible();}/***没有布局存在时胜利*计算得分*/private void win() {wingame = true;pthread.suspend();score += progress.getValue()/20+bombcount*BOMBP+refreshcount*REFRP+tipcount*TIPP;scoreLabel.setText(""+score);}private void shuffle(KyodaiGrid array[], int count) {if(wingame) return;do {setVisible(false);int j,k;Icon temp;for(int i=0;i<count;i++) {j = (int)(Math.random()*count);k = (int)(Math.random()*count);temp = array[k].getIcon();array[k].setIcon(array[j].getIcon());array[j].setIcon(temp);}setVisible(true);} while(!findPair());}public void refresh() {if(wingame||progress.getValue()==0||refreshcount==0) return;KyodaiGrid temp[] = new KyodaiGrid[xBound*yBound];int count = 0;for(int y=1;y<yBound-1;y++) {for(int x=1;x<xBound-1;x++) {if(grid[y][x].isVisible()) {grid[y][x].setBorder(opaqueBorder);temp[count] = grid[y][x];count++;}}}if(count!=0) {refreshcount--;refreshLabel.setText(""+refreshcount);shuffle(temp,count);} else win();}private boolean xdirect(KyodaiGrid start, KyodaiGrid end,Vector path) { if(start.getYpos()!=end.getYpos()) return false;int direct = 1;if(start.getXpos()>end.getXpos()) {direct = -1;}path.removeAllElements();for(intx=start.getXpos()+direct;x!=end.getXpos()&&x<xBound&&x>=0;x+=direct) { if(grid[start.getYpos()][x].isVisible()) return false;path.add(grid[start.getYpos()][x]);}path.add(end);return true;}private boolean ydirect(KyodaiGrid start, KyodaiGrid end,Vector path) { if(start.getXpos()!=end.getXpos()) return false;int direct = 1;if(start.getYpos()>end.getYpos()) {direct = -1;}path.removeAllElements();for(inty=start.getYpos()+direct;y!=end.getYpos()&&y<yBound&&y>=0;y+=direct) { if(grid[y][start.getXpos()].isVisible()) return false;path.add(grid[y][start.getXpos()]);}path.add(end);return true;}private int findPath(KyodaiGrid start, KyodaiGrid end) {//0 connerif(xdirect(start,end,path[0])) {return 1;}if(ydirect(start,end,path[0])) {return 1;}//1 connerKyodaiGrid xy = grid[start.getYpos()][end.getXpos()];if(!xy.isVisible()&&xdirect(start,xy,path[0])&&ydirect(xy,end,path[1])) {return 2;}KyodaiGrid yx = grid[end.getYpos()][start.getXpos()];if(!yx.isVisible()&&ydirect(start,yx,path[0])&&xdirect(yx,end,path[1])) {return 2;}//2 conner//uppath[0].removeAllElements();for(int y=start.getYpos()-1;y>=0;y--) {xy = grid[y][start.getXpos()];yx = grid[y][end.getXpos()];if(xy.isVisible()) break;path[0].add(xy);if(!yx.isVisible()&&xdirect(xy,yx,path[1])&&ydirect(yx,end,path[2])) {return 3;}}//downpath[0].removeAllElements();for(int y=start.getYpos()+1;y<yBound;y++) {xy = grid[y][start.getXpos()];yx = grid[y][end.getXpos()];if(xy.isVisible()) break;path[0].add(xy);if(!yx.isVisible()&&xdirect(xy,yx,path[1])&&ydirect(yx,end,path[2])) {return 3;}}//leftpath[0].removeAllElements();for(int x=start.getXpos()-1;x>=0;x--) {yx = grid[start.getYpos()][x];xy = grid[end.getYpos()][x];if(yx.isVisible()) break;path[0].add(yx);if(!xy.isVisible()&&ydirect(yx,xy,path[1])&&xdirect(xy,end,path[2])) {return 3;}}//rightpath[0].removeAllElements();for(int x=start.getXpos()+1;x<xBound;x++) {yx = grid[start.getYpos()][x];xy = grid[end.getYpos()][x];if(yx.isVisible()) break;path[0].add(yx);if(!xy.isVisible()&&ydirect(yx,xy,path[1])&&xdirect(xy,end,path[2])) {return 3;}}return 0;}/***在布局中消除配对*/private void deletePair(KyodaiGrid prev, KyodaiGrid current) {//尝试寻找路径//如果找到路径//animateVector temp = new Vector();temp.add(prev);for(int i=0;i<pcount;i++) {temp.addAll(path[i]);path[i].removeAllElements();}AnimateThread thread = new AnimateThread(temp);thread.start();score += progress.getValue()/20;scoreLabel.setText(""+score);progress.setValue(progress.getValue()+60);}/***展示找到的配对*/public void showNext() {if(wingame||progress.getValue()==0||tipcount==0) return;tipcount--;tipLabel.setText(""+tipcount);if(nexts!=null&&nexte!=null) {nexts.setBorder(tipBorder);nexte.setBorder(tipBorder);}}/***删除找到的配对*/public void useBomb() {if(wingame||progress.getValue()==0||bombcount==0) return;bombcount--;bombLabel.setText(""+bombcount);if(nexts!=null&&nexte!=null) {deletePair(nexts,nexte);}}/***发现有连接路径的配对*@返回是否发现*/private boolean findPair() {nexts = null;nexte = null;for(int sy=1;sy<yBound-1;sy++) {for(int sx=1;sx<xBound-1;sx++) {if(!grid[sy][sx].isVisible()) continue;for(int ey=sy;ey<yBound-1;ey++) {for(int ex=1;ex<xBound-1;ex++) {if(!grid[ey][ex].isVisible()||(ey==sy&&ex==sx)) continue;if(grid[sy][sx].getIcon()==grid[ey][ex].getIcon()) {pcount = findPath(grid[sy][sx],grid[ey][ex]);if(pcount!=0) {nexts = grid[sy][sx];nexte = grid[ey][ex];return true;}}}}}}return false;}private class GridMouseAdapter extends MouseAdapter { private KyodaiGrid prev;public void mouseClicked(MouseEvent me) {if(prev == null) {prev = (KyodaiGrid)me.getSource();prev.setBorder(selectedBorder);} else {if(progress.getValue()==0) return;KyodaiGrid current = (KyodaiGrid)me.getSource();if(current == prev) return;if(current.getIcon()==prev.getIcon()) {pcount = findPath(prev,current);if(pcount!=0) {deletePair(prev,current);//setprev = null;return;}}prev.setBorder(opaqueBorder);prev = current;prev.setBorder(selectedBorder);if(!findPair()) refresh();}}}private class AnimateThread extends Thread {private Vector v;public AnimateThread(Vector temp) {v = temp;}public void run() {KyodaiGrid prev = null;KyodaiGrid current;int j = 0;while(j<v.size()) {prev = (KyodaiGrid)v.remove(0);prev.setVisible(true);v.add(prev);j++;try {sleep(20);} catch(InterruptedException ire) {System.err.println("sleep interrupted");}}current = prev;prev = (KyodaiGrid)v.remove(0);while(!v.isEmpty()) {((KyodaiGrid)v.remove(0)).setVisible(false);try {sleep(20);} catch(InterruptedException ire) {System.err.println("sleep interrupted");}}prev.setVisible(false);current.setVisible(false);current.setIcon(ImageFactory.getInstance().getImageicon(39));prev.setIcon(ImageFactory.getInstance().getImageicon(39));current.setBorder(opaqueBorder);prev.setBorder(opaqueBorder);if(!findPair()) refresh();}//end of method run}private class ProgressThread extends Thread {public ProgressThread() {}public void run() {while(true) {while(progress.getValue()>0) {progress.setValue(progress.getValue()-1);try {sleep(100);} catch(InterruptedException ire) {System.err.println("sleep interrupted");}}repaint();suspend();}}}}【总结自己的体会和收获】:通过这次课程设计我学到了不少东西,也发现了大量的问题,同时在设计的过程中也发现了自己的不足之处,对以前学过的知识理解的不够深刻,对安卓手机小游戏的程序编写有了一定的了解。
连连看java代码课程设计
连连看java代码课程设计一、课程目标知识目标:1. 理解Java基本语法,掌握连连看游戏的核心算法;2. 学会使用Java编写图形用户界面,实现游戏窗口的布局与设计;3. 了解Java事件处理机制,能编写鼠标点击事件监听器。
技能目标:1. 培养学生运用Java语言解决实际问题的能力;2. 提高学生分析问题、设计算法、编写代码、调试程序的综合技能;3. 培养学生的创新思维和团队协作能力,通过分组完成任务,提高沟通与协作效率。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性,增强自信心;2. 培养学生面对困难时,保持积极的心态,勇于尝试,不断克服挫折;3. 培养学生的集体荣誉感,通过团队协作,共同完成任务,体验成功的喜悦。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能独立完成连连看游戏的Java代码编写,实现游戏的基本功能;2. 学生能通过小组合作,共同优化游戏界面,提升用户体验;3. 学生在课程学习过程中,能主动探究新知识,勇于挑战更高难度的编程任务;4. 学生在学习过程中,培养良好的编程习惯,注重代码规范和团队协作。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. Java基本语法:- 数据类型、变量、常量- 运算符、表达式、流程控制(分支、循环)- 数组、字符串2. Java图形用户界面设计:- Swing图形用户界面库简介- JFrame、JPanel容器组件- 布局管理器(边界布局、流布局等)3. Java事件处理机制:- 事件监听器、事件源- 鼠标事件、键盘事件- 事件适配器、事件处理线程4. 连连看游戏核心算法:- 游戏规则、数据结构设计- 算法实现(路径查找、消去逻辑等)- 游戏界面与逻辑分离教学大纲安排如下:1. 第一阶段(2课时):Java基本语法复习与巩固2. 第二阶段(2课时):Swing图形用户界面设计3. 第三阶段(2课时):Java事件处理机制4. 第四阶段(4课时):连连看游戏核心算法分析与实现教学内容与教材关联章节:1. 《Java程序设计》第3章:Java基本语法2. 《Java程序设计》第6章:Swing图形用户界面设计3. 《Java程序设计》第7章:Java事件处理机制4. 《Java程序设计》实例分析:连连看游戏案例三、教学方法针对本课程的教学目标和内容,采用以下多样化的教学方法:1. 讲授法:- 对于Java基本语法、Swing图形用户界面设计、Java事件处理机制等基础知识点,采用讲授法进行教学,使学生在短时间内掌握必要的理论知识;- 讲授过程中注重启发式教学,引导学生主动思考问题,提高课堂互动性。
JAVA连连看游戏课程设计
JAVA连连看游戏课程设计一、教学目标本课程的目标是让学生掌握Java编程基础,学会使用Java语言编写简单的连连看游戏。
通过本课程的学习,学生应达到以下目标:1.知识目标:–理解Java语言的基本语法和编程概念;–掌握面向对象编程的基本思想和方法;–了解常用的数据结构和算法。
2.技能目标:–能够使用Java语言编写简单的程序;–能够运用面向对象编程思想解决实际问题;–能够独立完成连连看游戏的设计和实现。
3.情感态度价值观目标:–培养学生的编程兴趣和自信心;–培养学生解决问题的能力和创新精神;–培养学生团队协作和沟通交流的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.Java语言基础:介绍Java语言的基本语法、数据类型、运算符、控制结构等。
2.面向对象编程:讲解类的定义、属性、方法、继承、多态等概念,并引导学生学会使用面向对象的思想解决问题。
3.常用数据结构和算法:介绍数组、链表、栈、队列等基本数据结构,以及排序、查找等常用算法。
4.连连看游戏设计与实现:引导学生运用所学知识设计和实现一个简单的连连看游戏,包括游戏界面设计、逻辑处理、算法实现等。
三、教学方法本课程采用多种教学方法相结合的方式,以激发学生的学习兴趣和主动性:1.讲授法:教师讲解基本概念、语法和算法,引导学生掌握知识要点。
2.案例分析法:通过分析实际案例,让学生学会运用所学知识解决实际问题。
3.实验法:学生动手编写代码,实践所学知识,培养编程能力和解决问题的能力。
4.小组讨论法:学生分组讨论,共同完成游戏设计,培养团队协作和沟通交流的能力。
四、教学资源本课程所需教学资源包括:1.教材:《Java编程入门》或其他同类教材;2.参考书:《Java核心技术》等;3.多媒体资料:PPT、教学视频等;4.实验设备:计算机、网络等。
教学资源应支持教学内容和教学方法的实施,丰富学生的学习体验,提高学习效果。
五、教学评估为了全面、客观地评估学生的学习成果,本课程采用以下评估方式:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,以反映学生的学习态度和积极性。
Java课程设计连连看游戏(含代码)
Java程序课程设计任务书一、主要任务与目标1、了解图形用户界面的概念;2、了解AWT的基本体系结构,掌握窗口的基本原理;3、掌握几种布局管理器的使用方法;4、掌握java的事件处理机制;5、了解Swing的基本体系结构,掌握Swing组件的使用方法;6、掌握java小程序的工作原理和使用方法;7、该游戏还将设置退出,再来一局按钮,并实现相应的功能。
8、设计一个用户注册登录界面二、主要内容与基本要求游戏规则是模仿网络上普通的连连看游戏,主要是鼠标两次点击的图片能否消去的问题。
当前,前提是点击两张相同的图片,若点击的是同一张图片或者两张不同的图片,则不予处理。
在两张想同图片所能连通的所有路径中,如果存在一条转弯点不多于两个的路径,就可以消去;如果没有,则不予处理。
该游戏由30张不同的图片组成,游戏开始将会出现30张随机组合的图片,在规则下点击两张相同的图片后图片将会消失。
图片全部消完为游戏成功。
游戏还将设置退出,再来一局的按钮,和倒计时的功能,方便用户进行操作。
并且有一个用户登录注册界面,玩家必须登录以后才可以进行游戏。
三、计划进度12月28日~ 12月29日:课程设计选题,查找参考资料12月30日~ 12月31日:阅读参考书籍,收集资料,完成需求分析1月1日~ 1月3日:系统的代码设计及实现,数据库设计与实现1月4日~ 1月5日:系统的调试,修改,完善1月6日~ 1月7日:完成课程设计报告,准备答辩四、主要参考文献[1] 刘宝林.Java程序设计与案例习题解答与实验指导[M].[2] 王鹏何云峰.Swing图形界面开发与案例分析[M].[3](美)Karl Avedal , Danny Ayers, Timothy Briggs. JSP编程指南[M]. 电子工业出版社, 2004,47-125.[4](美)Mark Linsenbardt. JSP在数据库中的应用与开发[M]. 希望电子出版社,2005,210-236.[5] Dianne Phelan,Building a simple web database application[C].IEEE InternationalProfessional Communication Conference, 2004, 79-86.[6](美)Karl Avedal,Danny Ayers,Timothy Briggs.JSP编程指南[M].电子工业出版社,2006,47-125.[7] Dianne Phelan,Building a simple web database application[C].IEEE InternationalProfessional Communication Conference, 2005, 79-86.[8] Altendorf. Eric, Hohman. Moses, Zabicki. Roman. Using J2EE on a large,web-based project[J]. IEEE Software.2002,19(02):81-89.摘要当今社会,休闲型游戏越来越得到人们的喜爱,我所做的毕业设计实例“连连看游戏的设计与实现”是近几年来网络上非常流行的一种二维休闲游戏,它对电脑配置要求不高,娱乐性强,易于上手。
连连看游戏java课程设计
连连看游戏java课程设计一、教学目标本课程的目标是让学生掌握Java编程语言的基本知识,学会使用Java编写简单的图形用户界面程序。
通过本课程的学习,学生将能够理解Java的基本语法,掌握面向对象编程的基本概念,学会使用Java Swing库创建图形用户界面。
具体的学习目标包括:1.理解Java编程语言的基本语法。
2.理解面向对象编程的基本概念,如类、对象、继承、封装和多态。
3.掌握Java Swing库的基本组件和事件处理机制。
4.能够使用Java编写简单的控制台程序。
5.能够使用Java Swing库创建图形用户界面程序。
6.能够调试和运行Java程序。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生对计算机科学的热爱。
2.培养学生团队合作的精神,学会与人合作解决问题。
3.培养学生的创新意识,鼓励学生积极探索和创造。
二、教学内容本课程的教学内容主要包括Java编程语言的基本语法、面向对象编程的概念以及Java Swing库的使用。
具体的教学大纲如下:1.第一章:Java编程语言的基本语法–数据类型和变量–运算符和表达式2.第二章:面向对象编程–继承和多态3.第三章:Java Swing库–Swing组件4.第四章:连连看游戏的设计与实现–游戏逻辑的设计–游戏界面的设计–游戏功能的实现三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法。
1.讲授法:教师通过讲解和示范,向学生传授Java编程语言的基本语法和概念。
2.讨论法:学生分组讨论问题,培养团队合作和沟通能力。
3.案例分析法:分析具体的案例,让学生理解Java Swing库的使用和图形用户界面的设计。
4.实验法:学生动手编写代码,实现连连看游戏,培养学生的实际编程能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将使用以下教学资源:1.教材:《Java编程语言》2.参考书:《Java Swing教程》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络环境以上教学资源将帮助学生更好地学习Java编程语言,掌握连连看游戏的设计与实现,提高编程能力和创新意识。
java实现连连看课程设计
java实现连连看课程设计一、课程目标知识目标:1. 掌握Java编程语言的基本语法和结构;2. 理解面向对象编程思想,能够运用类和对象进行程序设计;3. 学会使用Java中的数组存储和管理数据;4. 掌握Java图形用户界面编程,实现连连看游戏的界面设计和布局。
技能目标:1. 能够运用所学知识,独立完成连连看游戏的编写和调试;2. 提高问题分析能力,学会将实际问题转化为计算机程序;3. 培养逻辑思维和编程实践能力,提高编程效率。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性;2. 培养学生的团队协作精神,学会与他人合作解决问题;3. 增强学生的自信心,勇于面对挑战,克服困难;4. 培养学生严谨、细心的学习态度,养成良好的编程习惯。
课程性质:本课程为信息技术学科的一节实践性课程,结合连连看游戏的开发,让学生在实践中掌握Java编程知识。
学生特点:学生处于八年级,具备一定的信息技术基础,对编程有一定的了解,但实践经验不足。
教学要求:注重理论与实践相结合,充分调动学生的积极性,引导学生主动参与课堂讨论和实践操作。
通过完成连连看游戏项目,培养学生的编程能力和解决问题的能力。
在教学过程中,关注学生的个体差异,给予个性化指导,确保每个学生都能达到课程目标。
将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. Java基本语法与结构复习:回顾变量、数据类型、运算符、控制语句等基础知识,确保学生具备编写Java程序的基础能力。
教材章节:第一章 Java语言概述及基础语法。
2. 面向对象编程:介绍类与对象的概念,理解封装、继承、多态等面向对象特性,并通过实例演示如何运用。
教材章节:第二章 面向对象编程。
3. 数组的使用:讲解数组的定义、初始化、遍历和应用,为游戏数据存储打下基础。
教材章节:第三章 数组与字符串。
4. Java图形用户界面编程:介绍Swing库的基本组件,重点讲解容器、布局管理器和事件处理机制。
java课程设计报告连连看
java课程设计报告连连看一、课程目标知识目标:1. 学生能掌握Java基础语法,包括变量声明、数据类型、运算符和表达式。
2. 学生能理解并运用基本的控制结构,如顺序结构、分支结构和循环结构。
3. 学生能掌握数组的使用,包括一维数组、二维数组的定义和操作。
4. 学生能理解面向对象编程的基本概念,如类、对象、封装、继承和多态。
技能目标:1. 学生能运用所学知识设计并实现一个简单的“连连看”游戏,展示其逻辑思维和编程能力。
2. 学生通过编写代码,培养解决问题的能力,学会分析问题、设计算法和数据结构。
3. 学生能使用调试工具检查并修正程序中的错误,提高程序调试能力。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习Java的热情,树立学习信心。
2. 学生养成合作学习、团队协作的良好习惯,培养沟通能力和团队精神。
3. 学生认识到编程对解决实际问题的价值,提高对信息技术的认识,培养创新意识和实践能力。
课程性质:本课程为实践性较强的学科,结合理论知识与实际操作,培养学生的编程能力和逻辑思维。
学生特点:学生为初中年级,具备一定的逻辑思维和数学基础,对新鲜事物充满好奇,但注意力容易分散,需要激发学习兴趣。
教学要求:结合学生特点,教师应注重启发式教学,引导学生主动探索,关注个体差异,提高学生的实践操作能力和创新能力。
通过本课程的学习,使学生能够将所学知识应用于实际编程中,达到学以致用的目的。
后续教学设计和评估将围绕以上课程目标展开,确保学生达到预期学习成果。
二、教学内容1. Java基础语法- 变量声明与赋值- 数据类型与转换- 运算符与表达式- 顺序结构程序设计2. 控制结构- 分支结构(if、if-else、switch)- 循环结构(for、while、do-while)3. 数组- 一维数组的使用- 二维数组的使用4. 面向对象基础- 类的定义与对象创建- 封装(私有化属性、公有方法)- 继承与多态5. 游戏设计- “连连看”游戏规则与逻辑- 界面设计与实现- 程序流程控制教学大纲:第一周:Java基础语法学习,包括变量声明、数据类型、运算符和表达式。
数字连连看java课程设计
数字连连看java课程设计一、教学目标本节课的学习目标包括:知识目标:学生能够理解数字连连看Java程序的基本原理和实现方法,掌握Java编程的基本语法和流程控制语句。
技能目标:学生能够独立完成数字连连看Java程序的编写和调试,提高编程能力和问题解决能力。
情感态度价值观目标:学生能够体验到编程的乐趣,培养对计算机科学的兴趣和热情,增强自信心和团队合作意识。
二、教学内容本节课的教学内容主要包括:1.数字连连看Java程序的基本原理和实现方法。
2.Java编程的基本语法和流程控制语句。
3.数字连连看Java程序的编写和调试。
4.导入:介绍数字连连看游戏的基本玩法,引导学生思考如何用Java程序实现。
5.原理讲解:讲解数字连连看Java程序的基本原理和实现方法。
6.语法讲解:讲解Java编程的基本语法和流程控制语句。
7.编程实践:学生独立完成数字连连看Java程序的编写和调试。
8.总结与拓展:总结本节课所学内容,提出拓展问题和思考。
三、教学方法本节课的教学方法包括:1.讲授法:讲解数字连连看Java程序的基本原理和实现方法,以及Java编程的基本语法和流程控制语句。
2.讨论法:引导学生进行小组讨论,共同解决问题和总结经验。
3.案例分析法:分析数字连连看Java程序的案例,让学生理解编程的实际应用。
4.实验法:学生独立完成数字连连看Java程序的编写和调试,提高编程能力。
四、教学资源本节课的教学资源包括:1.教材:提供数字连连看Java程序的相关知识和Java编程的基本语法和流程控制语句。
2.参考书:提供更深入的Java编程知识和技巧。
3.多媒体资料:提供数字连连看Java程序的示例和教学视频,帮助学生更好地理解和掌握知识。
4.实验设备:提供计算机和编程环境,让学生能够实际操作和实践编程。
五、教学评估本节课的教学评估方式包括:1.平时表现:评估学生在课堂上的参与程度、提问回答情况等,占总评的30%。
2.作业:评估学生完成作业的质量和速度,占总评的30%。
单机连连看java课程设计
单机连连看java课程设计一、课程目标知识目标:1. 理解Java语言的基本语法和面向对象编程思想;2. 掌握连连看游戏的规则及逻辑设计;3. 学会使用Java编写图形用户界面(GUI)程序;4. 了解Java事件处理机制及其在游戏中的应用。
技能目标:1. 能够独立设计并编写连连看游戏的代码;2. 学会运用面向对象的方法对游戏进行模块化设计;3. 掌握调试和优化Java程序的方法;4. 提高问题分析、解决和程序设计的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发其创新意识;2. 培养学生团队协作、沟通交流的能力;3. 增强学生的自信心和自主学习能力,使其具备敢于面对和克服困难的品质;4. 培养学生遵守程序设计规范,养成良好的编程习惯。
课程性质:本课程为实践性较强的学科,注重理论联系实际,以学生动手实践为主。
学生特点:学生具备一定的Java基础,对编程有一定了解,但实践能力参差不齐。
教学要求:教师应关注学生的个体差异,因材施教,引导学生主动探究,注重培养学生的实践能力和创新精神。
通过本课程的学习,使学生能够将所学知识运用到实际项目中,提高其编程水平和综合素质。
二、教学内容1. Java基本语法复习:变量、数据类型、运算符、控制语句(条件语句、循环语句);2. 面向对象编程基础:类与对象、构造方法、封装、继承、多态;3. 图形用户界面(GUI)设计:Swing图形用户界面组件、布局管理器、事件处理机制;4. 连连看游戏规则及逻辑设计:游戏规则介绍、游戏逻辑分析、数据结构选择;5. 游戏程序编写:游戏界面设计、游戏逻辑实现、事件监听与处理;6. 调试与优化:程序调试技巧、性能优化方法;7. 代码规范与编程习惯:命名规范、代码格式、注释规范。
教学大纲安排:第一周:Java基本语法复习;第二周:面向对象编程基础;第三周:图形用户界面(GUI)设计;第四周:连连看游戏规则及逻辑设计;第五周:游戏程序编写(上);第六周:游戏程序编写(下);第七周:调试与优化;第八周:代码规范与编程习惯。
Java连连看程序代码
Button p1,p2,br,bt1,bt2; //p1、p2为选定的按钮
Panel panel1,panel2;
int d[][]={ //用来和界面的按钮建立映射关系
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0}
};
public static void main(String[] args)
panel1.add(b7); panel1.add(b8); panel1.add(b9);
panel1.add(b10); panel1.add(b11); panel1.add(b12);
panel1.add(b13); panel1.add(b14); panel1.add(b15);
b4=new Button(String.valueOf(d[1][4]));
b5=new Button(String.valueOf(d[1][5]));
b6=new Button(String.valueOf(d[2][1]));
b7=new Button(String.valueOf(d[2][2]));
{0,0,0,0,0,0,0}
};
this.d=d;
suiji(); //调用随机函数,产生随机数;
f.setVisible(false);
连连看java课程设计
连连看java课程设计一、课程目标知识目标:1. 理解Java语言的基本语法和程序结构;2. 掌握连连看游戏的逻辑设计和实现方法;3. 学会使用Java编程解决实际问题。
技能目标:1. 能够运用Java语言编写连连看游戏的界面和功能;2. 能够运用条件语句和循环语句实现游戏逻辑;3. 能够运用数组管理游戏数据,提高编程能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性;2. 培养学生解决问题的能力,增强自信心;3. 培养学生团队协作意识,提高沟通能力。
课程性质:本课程为实践性较强的Java编程课程,通过设计并实现连连看游戏,让学生在实践中掌握Java编程技能。
学生特点:学生具备一定的Java基础,对编程感兴趣,喜欢动手实践。
教学要求:结合学生特点和课程性质,注重理论与实践相结合,以学生为主体,充分调动学生的积极性和创造性。
将课程目标分解为具体的学习成果,以便于后续教学设计和评估。
二、教学内容1. Java基本语法复习:变量、数据类型、运算符、控制结构;2. 面向对象基础:类与对象、构造方法、成员变量、成员方法;3. 数组的使用:声明、初始化、遍历、排序;4. Java Swing图形用户界面:窗体、按钮、标签、布局管理器;5. 事件处理机制:事件监听器、事件适配器;6. 连连看游戏逻辑设计:游戏规则、数据存储、界面设计;7. 游戏功能实现:随机生成、匹配消除、计分与计时;8. 游戏测试与优化:功能测试、性能优化、用户体验。
教学内容安排与进度:第一课时:Java基本语法复习,面向对象基础;第二课时:数组的使用,Java Swing图形用户界面;第三课时:事件处理机制,连连看游戏逻辑设计;第四课时:游戏功能实现,测试与优化。
教学内容与教材关联:本教学内容与《Java编程思想》第四章至第七章内容相关,涉及基本语法、面向对象、数组和Swing图形用户界面等方面的知识。
通过本章节学习,学生能够将所学理论知识运用到实际项目中,提高编程实践能力。
课程设计报告Java实现游戏连连看(有源代码)
2.4流程图如下图2 主函数流程图图3 游戏进行流程图图4 使用炸弹流程图图5 计算时间流程图图6 开始游戏后画面用户选择两张一样的图片,通过鼠标进行选取,如果用户两次点击的图片不相同,那么系统认为用户没有点(鼠标记数归0),以完成用户以后的选取工作。
如果用户选择的是相同的图片(如第八行第二列和第八行第三列),那么系统会消除这两张图片,并使鼠标记数为0,并消除这两张图片的标记,使里面的图片被标记在外面。
以便用户可以进行以后的选择。
图7 消除三对后画面用户也可使通过使用“炸弹”功能进行消除图片。
方法是点击菜单中的“炸弹”选项使用,点击后如果界面上有两张可以相连的相同图片就随机消除两张可以相连的相同的图片(如第一行第一列河第一行第四列)。
图8 使用炸弹后画面炸弹数目是有限的,默认数目为三,每使用一次“炸弹”功能,炸弹数目就会自动减一,当炸弹数目为零时(使用三次“炸弹”功能)。
并且用户想再次使用炸弹时,系统会弹出对话框提示用户,并把菜单中“炸弹”选项变为灰色(用户不可使用)。
图9 炸弹使用光后画面当系统开始游戏后,系统会在后台记录时间,如果在用户还没有消除所有图片时,系统时间到了,那么系统会弹出对话框,提示用户,时间到了,游戏失败。
图10 时间到时的画面当用户点击确定后,系统还会弹出对话框询问用户是否重新开始,用户选择“是”时,系统会开始新游戏;当用户选择“否”时,系统会返回开始界面;当用户选择“取消”时,系统会返回提示时间到的界面。
图11 点击确定时的画面如果在时间未到时,用户使所有的图片都消失(两两消除,直到最后一对),系统会提示用户游戏以通过,点“确定”后回到开始界面。
图12 通关画面4.设计体会通过这次课程设计我学到了不少东西,也发现了大量的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
因而,通过课程设计之后,把以前所学过的知识重新温故。
有些在设计过程中已解决,有些还有待今后慢慢学习,只要认真学就会有更多的收获。
Java语言课程设计报告格式(连连看)
西安科技大学Java语言课程设计报告题目:基于j2me平台的连连看游戏开发班级:学号:姓名:2011年 1 月 6日目录1设计题目及具体要求 (1)2 总体设计说明书 (3)3 详细设计与实现 (6)4 系统测试 (20)5 设计小结 (20)1设计题目及具体要求1.1题目需求<<连连看>>来源于街机游戏<<四川麻将>>和<<中国龙>>,是给一堆图案中的相同图案进行配对的简单游戏。
2003年,一个名叫朱俊的网友将这种游戏模式搬到个人电脑上,立刻成为办公一族的新宠,并迅速传遍了世界各地。
<<连连看>>考验的是玩家的眼力和记忆力,在有限的时间内,只要把所有能连接的相同的图案,两个一对的找出来,没找出一对(用鼠标点击配对),它们就会自动消失,只要把所有的图案全部消掉就可获得胜利。
开始制作游戏时,主要要解决的问题有以下几个方面:如何设置整个游戏的界面;如何控制连连看游戏中随机图片的生成且每种图片必须为偶数个;游戏开始后,判断键盘两次点击的图片能否消去,即图片是否相同且图片之间路径的判断.设计该游戏仅供学习、研究之用,应用目标是让使用该软件的用户能够在闲暇之时放松一下自己。
设计该游戏是因为对手机游戏的喜爱,以及对QQ游戏中的连连看的了解,所以就产生了自己模仿一个的想法。
由于本软件是模仿其他类似软件开发的,所以只能供学习、研究之用。
1.2实现环境及工具简介1.2.1 开发环境(1)硬件环境处理器:800MHz以上CPU或是更高。
内存:128MB(建议 196MB)。
硬盘空间:20MB。
(2)软件环境操作系统:Windows 98 或是Windows 2000/Windows NT Server 4.0。
开发工具:eclipse-SR2-win32J2ME Wireless Toolkit 2.21.2.2运行环境Nokia(诺基亚) Nokia Developer's Suite 支持J2ME平台的手机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java程序课程设计任务书1、主要内容:本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。
2、具体要求(包括技术要求等):a. 该游戏界面为方格类型,由纵6横7的直线平行垂直交叉组成,分别是6行5列方块拼接,共有30格小方块。
方块上随机分布一些数字,数字的要求是至少两两相同,位置随机打乱。
b.当将相同数字的方块连接,但要满足只能至少单边无阻碍呈直线趋势连接,否则无效,若连接一对成功就消失于界面,继续游戏,直到游戏结束,并能返回所得分数。
c. 重列按钮(帮助)的功能:游戏过程中,遇到困难难以寻找下一符合要求的一对数字,可按左下按钮重置重新排列方可继续游戏。
d. 退出按钮:击左下方的“退出游戏”按钮,即可结束游戏。
e.运用基于SWING的图形用户界面设计知识等。
3、学习并掌握以下技术:Java等4、熟练使用以下开发工具:Jcreate 等实现系统上述的功能。
三、计划进度12月28日-12月29 日:课程设计选题,查找参考资料12月30日-12月31日:完成需求分析、程序设计1月1日-1月3日:完成程序代码的编写1月4日-1月6日:系统测试与完善1月7日-1月8日:完成课程设计报告,准备答辩四、主要参考文献[1] (美)埃克尔著陈昊鹏,饶若楠等译. Java编程思想[J]. 机械工业出版社,2005[2](美)Gary J.Bronson著张珑刘雅文译. Java编程原理[J]. 清华大学出版社,2004[3](美)Michael Morrison著徐刚,于健,薛雷译. 游戏编程入门[J]. 人民邮电出版社,2005.9[4](美)Wendy Stahler著冯宝坤,曹英译. 游戏编程中的数理应用[J]. 红旗出版社,2005[5](美)克罗夫特(David Wallace Croft)著彭晖译. Java游戏高级编程[J]. 清华大学出版社,2005[6](美)David Brackeen著邱仲潘译. Java游戏编程[J]. 科学出版社,2004[7] 聂庆亮编著. Java应用开发指南[J]. 清华大学出版社,2010[8] 耿祥义,张跃平编著. Java面向对象程序设计[J]. 清华大学出版社,2010[9] 杨绍方编著. Java编程实用技术与案例[J]. 清华大学出版社,2000.11[10] 明日科技编著. Java编程全能词典[J]. 电子工业出版社,2010摘要随着Java语言的不断发展和壮大,现在的Java已经广泛的应用于各个领域,包括医药,汽车工业,手机行业,游戏,等等地方。
Java游戏的开发为满足人们娱乐所需而设计。
本游戏为连连看游戏,是基于Java的图形用户界面而开发的,可以放松心情的小游戏。
游戏从系统操作简便、界面友好、灵活、上手即会的基本要求出发,完成整款游戏的开发。
游戏更设置了重列、再来一局、退出等功能,简单易懂,为用户带来愉悦的体验。
本课程设计报告介绍了游戏的构想,分析,开发,实现的过程。
论述了游戏的功能开发,设计构思。
给出了游戏的设计步骤,游戏系统关键的设计思想;在游戏系统实现章节给出了部分功能流程和相关代码。
关键词:游戏,连连看目录JA V A程序课程设计任务书 (I)摘要 ........................................................................................................................................................... I II 目录 (IV)第一章引言 (1)1.1背景 (1)1.2课程设计内容 (1)1.3任务分工 (1)第二章连连看小游戏应用程序 (2)2.1连连看小游戏应用程序概述 (2)2.2连连看小游戏系统任务及目的 (2)2.3本章小结 (2)第三章连连看系统的设计 (3)3.1算法设计 (3)3.2系统开发及运行环境 (3)3.3系统主要功能要求 (4)3.4.1 连连看的总体结构 (4)3.5连连看游戏系统流程图 (5)3.6本章小结 (7)第四章结束语 (8)致谢 (9)参考文献 (10)附录源代码 (11)第一章引言1.1 背景游戏是全球最大的娱乐经济项目之一,已经被命名为“第九艺术”。
而由“游戏”派生出来的职业,除了软件开发外,游戏包装宣传推广、攻略指导、网络游戏管理员和职业游戏玩家等,已成为了一系列专门的岗位。
面对游戏产业如此巨大的市场空间,国内各大城市纷纷加大了这方面的人才培养,中国的游戏人才培训已随着游戏行业的总体发展开始逐步迈入了正轨。
虽然说中国的游戏行业开始逐步的迈入了正轨,但是现今,游戏人才出现严重的瓶颈时期,高校的扩招、金融危机的侵袭直接影响着我们最关心的就业问题,但是另一方面游戏人才的缺乏又直接制约着行业的发展,这就更加严格了对社会培训机构的稳定性和正规性的要求。
在我国,游戏人才培养体系还未健全,部分开设了相关专业的高校,游由于理论和实践的脱离无法完全满足网游公司对人才的需求。
所以,就中国目前的市场分析来看,加强游戏产业必须在多渠道人才培养体系上加快突破,尽快建立起多渠道人才培养体系,来满足社会对游戏人才的需求。
1.2 课程设计内容本程序基本实现了小游戏连连看的功能,玩家找出游戏中2个相同图案的方块,如果它们之间的连接线不多于3根直线,则将其连接起来,就可以成功将图案相同的方块消除,否则不会消失,当游戏中已没有满足条件的图案时,点击重列,可重新排序,游戏结束会跳出所得分数,该游戏的特点是与自己竞争,超过自己之前所创纪录。
1.3 任务分工第二章连连看小游戏应用程序2.1 连连看小游戏应用程序概述此程序设计是一个小游戏(连连看)的实现,主要运用了用户图形界面,程序接口和基本函数绘制来实现,事件监听(包括鼠标事件,键盘事件,响应时间)也是这个程序的特色。
加入复选框,按钮,标签等来实现本游戏用户界面布局。
本游戏在用户界面的可操作性、游戏的美观度、计分结果方便都基本完善,有一定的可玩性。
2.2连连看小游戏系统任务及目的此小程序是为群众闲暇消遣之用,进入游戏界面,即可开始游戏,接着是“重列”、“退出”、“再来一局”方便对游戏的控制。
2.3 本章小结虽然游戏在功能和界面上不能算的上很棒,但是麻雀虽小,五脏俱全,游戏具备了弹砖块这个经典游戏锁应该具有的基本雏形。
通过这一章,我们对这个游戏应该有了比较宏观的了解,我们将在这一基础上探究游戏更完美的改变。
第三章连连看系统的设计这一章时连连看系统的设计,从系统需求分析开始,介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图。
3.1 算法设计在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。
分三种情况:(从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路径。
这样就会有三条路径。
若这三条路径上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了)1相邻2若不相邻的先在第一个按钮的同行找一个空按钮找到后看第二个按钮横向到这个空按钮所在的列是否有按钮,没有的话再看第一个按钮到它同行的那个空按钮之间是否有按钮,没有的话再从与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮,没有的话路径就通了,可以消了。
3若2失败后,再在第一个按钮的同列找一个空按钮,找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮,没有的话再看第一个按钮到与它同列的那个空按钮之间是否有按钮,没有的话路径就通了,可以消了。
若以上三步都失败,说明这两个按钮不可以消去。
3.2 系统开发及运行环境硬件平台:❑CPU:INTEL-I5。
❑内存:1024MB以上。
软件平台:❑操作系统:Windows XP。
❑数据库:TXT文档。
❑开发工具包:JDK Version1.6.2。
❑分辨率:最佳效果1024×768像素3.3 系统主要功能要求本系统为了实现游戏连连看。
本系统主要实现如下功能:❑系统界面美观大方舒适。
❑实现游戏一些基础信息的保存和读取。
❑画面流畅,具有可玩性❑没有较大的游戏BUG。
❑显示游戏者的积分。
❑实现多种数字的排列模型。
❑系统最大限度地实现了易维护性和易操作性。
❑系统运行稳定、安全可靠。
3.4.1 连连看的总体结构连连看游戏是基于基本的软件和普通硬件基础上的传统优秀游戏,一个游戏应该包括以下几大功能,如图3.1所示图3.1 系统功能结构图3.5连连看游戏系统流程图程序的流程图如下:3.6 本章小结本章是连连看游戏系统的具体设计过程,有具体的需求分析、系统功能模块、系统流程图。
这里我们开始接触连连看游戏系统开发的最初步骤,也是很重要的一步。
第四章结束语由于市场需要,游戏的更新速度步步加快,为了适应社会的需要,社会对游戏开发人员的需求,在游戏编程的学习过程中,必须理论与实践结合,提高编程能力与水平。
通过小游戏的设计,对以学过的内容加深理解,对游戏开发的过程有初步的认识,为以后的游戏开发设计和更加深入的学习计算机语言打下夯实的基础。
目前竞争日益激烈的行业环境,对于未来行业的前景,还是要保持乐观的心态。
毕竟游戏并不是一下子就可以编写成的。
需要不断的技术积累,需要团队的合作,提高了工作的效率,才算是在游戏开发的道路上成功了一半。
在现在这个信息化飞速发展的道路上,要成为一名合格的编程人员,那就必须走好每一步现在的路。
基于Java的连连看小游戏,满足了用户娱乐的需求,已经达到了预期的目标。
虽然该游戏大部分功能基本上已经实现,但是还是会存在一些不足。
在今后的进步中,会逐步改进。
致谢参考文献[1] (美)埃克尔著陈昊鹏,饶若楠等译. Java编程思想[J]. 机械工业出版社,2005[2](美)Gary J.Bronson著张珑刘雅文译. Java编程原理[J]. 清华大学出版社,2004[3](美)Michael Morrison著徐刚,于健,薛雷译. 游戏编程入门[J]. 人民邮电出版社,2005.9[4](美)Wendy Stahler著冯宝坤,曹英译. 游戏编程中的数理应用[J]. 红旗出版社,2005[5](美)克罗夫特(David Wallace Croft)著彭晖译. Java游戏高级编程[J]. 清华大学出版社,2005[6](美)David Brackeen著邱仲潘译. Java游戏编程[J]. 科学出版社,2004[7] 聂庆亮编著. Java应用开发指南[J]. 清华大学出版社,2010[8] 耿祥义,张跃平编著. Java面向对象程序设计[J]. 清华大学出版社,2010[9] 杨绍方编著. Java编程实用技术与案例[J]. 清华大学出版社,2000.11[10] 明日科技编著. Java编程全能词典[J]. 电子工业出版社,2010附录源代码package mybase.programe;/** lianliankan总体算法思路:由两个确定的按钮。