走迷宫游戏的JAVA实现

走迷宫游戏的JAVA实现
走迷宫游戏的JAVA实现

//MazeWindow.java

import java.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import javax.swing.filechooser.*;

public class MazeWindow extends JFrame implements ActionListener{ Maze maze;

JMenuBar bar;

JMenu menuChoice,menuImage;

JMenuItem wallImage,roadImage,defaultImage;

File mazeFile,wallImageFile,roadImageFile;

JButton renew;

MazeWindow(){

wallImageFile=new File("wall.jpg");

roadImageFile=new File("road.jpg");

bar=new JMenuBar();

menuChoice=new JMenu("选择迷宫");

File dir=new File(".");

File file[]=dir.listFiles(new FilenameFilter(){

public boolean accept(File dir,String name){

return name.endsWith("maze");

}

})

for(int i=0;i

{JMenuItem item=new JMenuItem(file[i].getName());

item.addActionListener(this);

menuChoice.add(item);

}

mazeFile=new File(file[0].getName());

init();

menuImage=new JMenu("选择墙和路的图像(JPG,GIF)"); wallImage=new JMenuItem("墙的图像");

roadImage=new JMenuItem("路的图像");

defaultImage=new JMenuItem("墙和路的默认图像"); menuImage.add(wallImage);

menuImage.add(roadImage);

menuImage.add(defaultImage);

bar.add(menuChoice);

bar.add(menuImage);

setJMenuBar(bar);

wallImage.addActionListener(this);

roadImage.addActionListener(this);

defaultImage.addActionListener(this);

renew=new JButton("重新开始");

renew.addActionListener(this);

add(maze,BorderLayout.CENTER);

add(renew,BorderLayout.SOUTH);

setVisible(true);

setBounds(60,60,510,480);

validate();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void init(){

if(maze!=null){

remove(maze);

remove(maze.getHandleMove());

}

maze=new Maze();

maze.setWallImage(wallImageFile);

maze.setRoadImage(roadImageFile);

maze.setMazeFile(mazeFile);

add(maze,BorderLayout.CENTER);

add(maze.getHandleMove(),BorderLayout.NORTH);

validate();

}

public void actionPerformed(ActionEvent e){

if(e.getSource()==roadImage){

JFileChooser chooser=new JFileChooser();

FileNameExtensionFilter filter=new FileNameExtensionFilter(

"JPG & GIF Images","jpg","gif");

chooser.setFileFilter(filter);

int state=chooser.showOpenDialog(null);

File file=chooser.getSelectedFile();

if(file!=null&&state==JFileChooser.APPROVE_OPTION){

roadImageFile=file;

maze.setRoadImage(roadImageFile);

}

}

else if(e.getSource()==wallImage){

JFileChooser chooser=new JFileChooser();

FileNameExtensionFilter filter=new FileNameExtensionFilter(

"JPG & GIF Images","jpg","gif");

chooser.setFileFilter(filter);

int state=chooser.showOpenDialog(null);

File file=chooser.getSelectedFile();

if(file!=null&&state==JFileChooser.APPROVE_OPTION){ wallImageFile=file;

maze.setWallImage(wallImageFile);

}

}

else if(e.getSource()==defaultImage){

wallImageFile=new File("wall.jpg");

roadImageFile=new File("road.jpg");

maze.setWallImage(wallImageFile);

maze.setRoadImage(roadImageFile);

}

else if(e.getSource()==renew){

init();

}

else{ JMenuItem item=(JMenuItem)e.getSource();

mazeFile=new File(item.getText());

init();

}

}

public static void main(String args[]){

new MazeWindow();

}

}

//Maze.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.io.*;

public class Maze extends JLayeredPane{

File mazeFile;

MazePoint[][] mazePoint;

WallOrRoad[][] wallOrRoad;

PersonInMaze person;

HandleMove handleMove;

File wallImage,roadImage;

int distance=26,m=0,n=0;

public Maze(){

setLayout(null);

wallImage=new File("wall.jpg");

roadImage=new File("road.jpg");

person=new PersonInMaze();

handleMove=new HandleMove();

handleMove.initSpendTime();

person.addKeyListener(handleMove);

setLayer(person,JLayeredPane.DRAG_LAYER);

}

public void setMazeFile(File f){

mazeFile=f;

char[][] a;

RandomAccessFile in=null;

String lineWord=null;

try{

in=new RandomAccessFile(mazeFile,"r");

long length=in.length();

long position=0;

in.seek(position);

while(position

String str=in.readLine().trim();

if(str.length()>=n)

n=str.length();

position=in.getFilePointer();

m++;

}

a=new char[m][n];

position=0;

in.seek(position);

m=0;

while(position

String str=in.readLine();

a[m]=str.toCharArray();

position=in.getFilePointer();

m++;

}

in.close();

wallOrRoad=new WallOrRoad[m][n];

for(int i=0;i

for(int j=0;j

wallOrRoad[i][j]=new WallOrRoad();

if(a[i][j]=='1'){

wallOrRoad[i][j].setIsWall(true);

wallOrRoad[i][j].setWallImage(wallImage);

wallOrRoad[i][j].repaint();

}

else if(a[i][j]=='0'){

wallOrRoad[i][j].setIsRoad(true);

wallOrRoad[i][j].setRoadImage(roadImage);

wallOrRoad[i][j].repaint();

}

else if(a[i][j]=='*'){

wall0rRoad[i][j].setIsEnter(true);

wall0rRoad[i][j].setIsRoad(true);

wall0rRoad[i][j].repaint();

}

else if(a[i][j]=='#'){

wallOrRoad[i][j].setIsOut(true);

wallOrRoad[i][j].setIsRoad(true);

wallOrRoad[i][j].repaint();

}

}

}

mazePoint=new MazePoint[m][n];

int Hspace=distance,Vspace=distance;

for(int i=0;i

for(int j=0;j

mazePoint[i][j]=new MazePoint(Hspace,Vspace);

Hspace=Hspace+distance;

}

Hspace=distance;

Vspace=Vspace+distance;

}

for(int i=0;i

for(int j=0;j

add(wallOrRoad[i][j]);

wallOrRoad[i][j].setSize(distance,distance);

wallOrRoad[i][j].setLocation(mazePoint[i][j].getX(),mazePoint[i][j].getY());

wallOrRoad[i][j].setAtMazePoint(mazePoint[i][j]);

mazePoint[i][j].setWallOrRoad(wallOrRoad[i][j]);

mazePoint[i][j].setIsWallOrRoad(true);

if(wallOrRoad[i][j].getIsEnter()){

person.setAtMazePoint(mazePoint[i][j]);

add(person);

person.setSize(distance,distance);

person.setLocation(mazePoint[i][j].getX(),mazePoint[i][j].getY());

person.requestFocus();

person.repaint();

}

}

}

handleMove.setMazePoint(mazePoint);

}

catch(IOException exp){

JButton mess=new JButton("无效的迷宫文件");

add(mess);

mess.setBounds(30,30,100,100);

mess.setFont(new Font("宋体",Font.BOLD,30));

System.out.println(exp+"mess");

}

}

public void setWallImage(File f){

wallImage=f;

for(int i=0;i

for(int j=0;j

if(wallOrRoad[i][j].getIsWall())

wallOrRoad[i][j].setWallImage(wallImage);

wallOrRoad[i][j].repaint();

}

}

}

public void setRoadImage(File f){

roadImage=f;

for(int i=0;i

for(int j=0;j

if(wallOrRoad[i][j].getIsRoad())

wallOrRoad[i][j].setRoadImage(roadImage);

wallOrRoad[i][j].repaint();

}

}

}

public HandleMove getHandleMove(){

return handleMove;

}

}

//WallOrRoad.java

import javax.swing.*;

import java.awt.*;

import javax.swing.border.*;

import java.io.*;

public class WallOrRoad extends JPanel{

boolean isRoad,isWall,isEnter,isOut;

MazePoint point;

File wallImage,roadImage;

Toolkit tool;

WallOrRoad(){

tool=getToolkit();

}

public void setIsEnter(boolean boo){

isEnter=boo;

if(isEnter==true)

add(new JLabel("入口"));

}

public boolean getIsEnter(){

return isEnter;

}

public void setIsOut(boolean boo){

isOut=boo;

if(isOut==true)

add(new JLabel("出口"));

}

public boolean getIsOut(){

return isOut;

}

public void setIsRoad(boolean boo){

isRoad=boo;

if(isRoad==true){

setBorder(null);

}

}

public boolean getIsRoad(){

return isRoad;

}

public void setIsWall(boolean boo){

isWall=boo;

if(isWall==true)

setBorder(new SoftBevelBorder(BevelBorder.RAISED));

}

public boolean getIsWall(){

return isWall;

}

public void setAtMazePoint(MazePoint p){

point=p;

}

public MazePoint getAtMazePoint(){

return point;

}

public void setWallImage(File f){

wallImage=f;

}

public void setRoadImage(File f){

roadImage=f;

}

public void paintComponent(Graphics g){

super.paintComponent(g);

int w=getBounds().width;

int h=getBounds().height;

try{

if(isRoad==true){

Image image=tool.getImage(roadImage.toURI().toURL());

g.drawImage(image,0,0,w,h,this);

}

else if(isWall==true){

Image image=tool.getImage(wallImage.toURI().toURL());

g.drawImage(image,0,0,w,h,this);

}

}

catch(Exception exp){}

}

}

//MazePoint.java

public class MazePoint{

int x,y;

boolean haveWallOrRoad;

WallOrRoad wallOrRoad=null;

public MazePoint(int x,int y){

this.x=x;

this.y=y;

}

public boolean isHaveWallOrRoad(){

return haveWallOrRoad;

}

public void setIsWallOrRoad(boolean boo){

haveWallOrRoad=boo;

}

public int getX(){

return x;

}

public int getY(){

return y;

}

public boolean equals(MazePoint p){

if(p.getX()==this.getX()&&p.getY()==this.getY())

return true;

else

return false;

}

public void setWallOrRoad(WallOrRoad obj){

wallOrRoad=obj;

}

public WallOrRoad getWallOrRoad(){

return wallOrRoad;

}

}

//PersonInMaze.java

import javax.swing.*;

import java.awt.*;

public class PersonInMaze extends JTextField{

MazePoint point;

Toolkit tool;

PersonInMaze(){

tool=getToolkit();

setEditable(false);

setBorder(null);

setOpaque(false);

setToolTipText("单击我,然后按键盘方向键");

}

public void setAtMazePoint(MazePoint p){

point=p;

}

public MazePoint getAtMazePoint(){

return point;

}

public void paintComponent(Graphics g){

super.paintComponent(g);

int w=getBounds().width;

int h=getBounds().height;

Image image=tool.getImage("person.gif");

g.drawImage(image,0,0,w,h,this);

}

}

//HandleMove.java

import java.awt.event.*;

import java.awt.*;

import javax.swing.*;

public class HandleMove extends JPanel implements KeyListener,ActionListener{ MazePoint[][] p;

int spendTime=0;

javax.swing.Timer recordTime;

JTextField showTime;

Toolkit tool;

HandleMove(){

recordTime=new javax.swing.Timer(1000,this);

showTime=new JTextField(16);

tool=getToolkit();

showTime.setEditable(false);

showTime.setHorizontalAlignment(JTextField.CENTER);

showTime.setFont(new Font("楷体_GB2312",Font.BOLD,16));

JLabel hitMess=new JLabel("单击走迷宫者,按键盘方向键",JLabel.CENTER);

hitMess.setFont(new Font("楷体_GB2312",Font.BOLD,18));

add(hitMess);

add(showTime);

setBackground(Color.cyan);

}

public void setMazePoint(MazePoint[][] point){

p=point;

}

public void initSpendTime(){

recordTime.stop();

spendTime=0;

showTime.setText(null);

}

public void keyPressed(KeyEvent e){

recordTime.start();

PersonInMaze person=null;

person=(PersonInMaze)e.getSource();

int m=-1,n=-1;

MazePoint startPoint=person.getAtMazePoint();

for(int i=0;i

for(int j=0;j

if(startPoint.equals(p[i][j])){

m=i;

n=j;

break;

}

}

}

if(e.getKeyCode()==KeyEvent.VK_UP){

int k=Math.max(m-1,0);

if(p[k][n].getWakkOrRoad().getIsRoad()){

tool.beep();

person.setAtMazePoint(p[k][n]);

person.setLocation(p[k][n].getX(),p[k][n].getY());

}

}

else if(e.getKeyCode()==KeyEvent.VK_DOWN){

int k=Math.min(m+1,p.length-1);

if(p[k][n].getWallOrRoad().getIsRoad()){

tool.beep();

person.setAtMazePoint(p[k][n]);

person.setLocation(p[k][n].getX(),p[k][n].getY());

}

}

else if(e.getKeyCode()==KeyEvent.VK_LEFT){

int k=Math.max(n-1,0);

if(p[m][k].getWallOrRoad().getIsRoad()){

tool.beep();

person.setAtMazePoint(p[m][k]);

person.setLocation(p[m][k].getX(),p[m][k].getY());

}

}

else if(e.getKeyCode()==keyEvent.VK_RIGHT){

int k=Math.min(n+1,p[0].length-1);

if(p[m][k].getWallOrRoad().getIsRoad()){

tool.beep();

person.setAtMazePoint(p[m][k]);

person.setLocation(p[m][k].getX(),p[m][k].getY());

}

}

}

public void actionPerformed(ActionEvent e){

spendTime++;

showTime.setText("您的用时:"+spendTime+"秒");

}

public void keyReleased(KeyEvent e){

PersonInMaze person=(PersonInMaze)e.getSource();

int m=-1,n=-1;

MazePoint endPoint=person.getAtMazePoint();

if(endPoint.getWallOrRoad().getIsOut()){

recordTime.stop();

JOptionPane.showMessageDialog(this,"您成功了!","消息框

",https://www.360docs.net/doc/7f10661196.html,RMA TION_MESSAGE);

}

}

public void keyTyped(KeyEvent e){}

}

java课设走迷宫含代码

目录1.设计目的 1.1课程设计的目的 2.总体设计 2.1设计思路 2.2设计方法 3.关键技术 4.程序流程 5.主要源代码 6. 运行结果及结论 7.参考文献

1.设计目的 1.1课程设计的目的 随着科技进步,时代发展,计算机走进了大家的生活。计算机程序强大的功能为使用者提供服务,编程语言也变得越来越流行。Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。 为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,熟练应用面向对象的思想和设计方法解决实际问题的能力,也是为了增加同学们娱乐游戏选择而开发了一个适合学生的,能提升思考力的迷宫冒险游戏,这既锻炼了动手能力,还能进行消遣娱乐,可谓一举两得。 2.总体设计 2.1设计思路 根据对游戏系统进行的需求分析,本系统将分为6个模块:分别是迷宫主界面模块、记时设计模块、迷宫设计模块、道路和障碍设计模块、动漫冒险者设计模块、出入口设计模块。实现的功能有: (1)迷宫的选择 玩家可以根据自身需求来进行选择简单迷宫、中等迷宫、难度迷宫三类中选择一类迷宫进行游戏。 (2)选择道路和障碍的图像 玩家可以根据个人喜好对迷宫中的道路和障碍的图片进行选择,但是图片的格式有规定,必须是“jpg”或“gif”格式的。 (3)游戏记时 当玩家控制迷宫中的动漫人物进行游戏时,计时器就开始进行记时,直到动漫人物到达出口时,记时结束,并在屏幕上显示游戏用时。 (4)开始游戏 玩家将鼠标移动至迷宫中的动漫冒险者,即可看到“单击我然后按键盘方向键”,单击后,游戏开始。玩家即可通过键盘上的方向键进行游戏。 (5)游戏结束 玩家控制动漫冒险者移动至迷宫地图的出口处时,游戏的计时器停止计时,并弹出信息框“恭喜您通关了”,游戏结束。

(完整word版)走迷宫游戏程序设计.docx

《C 语言程序设计》 题目走迷宫游戏程序设计 一、内容 本系统主要实现了走迷宫游戏,执行游戏的时候出现迷宫图案,每次各不相同,但是入 口均在左上角,出口在右下角,出入口各有“出”、“入”提示。人物为㊣,“█”表示墙,外围为一圈墙,空白部分为可行走的路,使用“上”、“下”、“左”、“右”键操作㊣,当遭遇“墙”时无法前进,操作“█”上下左右移动,直至走到出口,游戏胜利。当无法走出迷宫 时,按“ Esc”键即可退出游戏。 二、上机环境 操作系统: windows XP 开发工具: vc6.0 三、函数调用关系图

main 函数 creat 函数paint 函数game 函数gotoxy 函数get_key函数gotox 函数 图一:函数调用关系图 四、各函数功能说明 main 函数:主函数; create函数:随机生成迷宫; paint函数:画出迷宫; game函数:开始游戏; gotoxy 函数:在文本窗口设置光标; get_key函数:接受按键; 五、算法描述或流程图

开始 游戏界面 画长 33 宽 31 迷宫玩家继续移动人物 开始游戏 N 玩家移动人物 是否到达 口? 出N Y 是否遇 到墙?游戏成功 Y 结束人物坐标位置不变 图二:算法流程图 六、程序运行效果图

图三:游戏开始效果图

图四:到达终点效果图 七、总结 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践 能力的重要环节。大学来说掌握计算机开发技术是十分重要的。在程序设计的过程中,我遇到了不少的问题,请教过学姐或者学长,也请教了老师,最后将程序设计好了。回顾起此次 课程设计,我感慨良多,从拿到题目到完成整个编程,从理论到实践,在整整两个星期的日 子里,我学到了很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识,我发现 c 语言是一门有趣的课程,对它产生了很大的兴趣。并且我明白了细心真的很重要,有时候就是因为一点点的小错误,而导致程序无法调试,并且需要花较长的时间去寻找错误。细心很重要的。 两个星期前的现在,当听到老师布置给我们的题目时,我们都蒙了,这么难的题目我们怎么会啊,我们只能尽我们自己最大的努力把程序给写出来,虽然知道这一路肯定是异常的 艰苦,但豁出去了。上网查资料、去图书馆查,查相关的函数,经过两三天的努力,我把框 架弄出来了,可是还有计算难题摆在我的面前,真的是个难题,自从把框架弄好了以后就没 有进展了,眼看一个星期快过去了,我那个急啊,可是急也没有用。我坚持,终于工夫不负 有心人,大功告成了。

Java五子棋游戏源代码(人机对战)

//Java编程:五子棋游戏源代码 import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; import java.io.PrintStream; import javax.swing.JComponent; import javax.swing.JPanel; /* *main方法创建了ChessFrame类的一个实例对象(cf), *并启动屏幕显示显示该实例对象。 **/ public class FiveChessAppletDemo { public static void main(String args[]){ ChessFrame cf = new ChessFrame(); cf.show(); } } /* *类ChessFrame主要功能是创建五子棋游戏主窗体和菜单**/ class ChessFrame extends JFrame implements ActionListener { private String[] strsize={"20x15","30x20","40x30"}; private String[] strmode={"人机对弈","人人对弈"}; public static boolean iscomputer=true,checkcomputer=true; private int width,height; private ChessModel cm; private MainPanel mp; //构造五子棋游戏的主窗体 public ChessFrame() { this.setTitle("五子棋游戏"); cm=new ChessModel(1); mp=new MainPanel(cm); Container con=this.getContentPane(); con.add(mp,"Center"); this.setResizable(false); this.addWindowListener(new ChessWindowEvent()); MapSize(20,15); JMenuBar mbar = new JMenuBar(); this.setJMenuBar(mbar); JMenu gameMenu = new JMenu("游戏");

java小游戏源码

连连看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);

大班游戏教案《走迷宫》

大班游戏教案《走迷宫》 【设计意图】 走迷宫能有效地提高幼儿的有意注意和空间智能,帮助幼儿学会整体观察、全方位思考,培养幼儿逆向思维能力及沉着冷静、敢于挑战的品质等。 我班幼儿对走迷宫有一定经验,但能力参差不齐。有的幼儿能迅速判断并选择通畅的路径走出迷宫; 有的幼儿很容易迷失方向,多次“碰壁”后才能走出迷宫; 有的幼儿急于求成,缺乏一定的耐心,等等。基于此,我们设计了这个活动,将数学学习融入走迷宫游戏中,让幼儿在轻松愉快又富有挑战的情境中,提升经验,形成策略,巩固走迷宫的方法。 【活动目标】 1. 掌握走迷宫的一般方法(从进口走向出口;遇到岔路口选路线遇到死胡同回岔路口换条路线走等),学会反向检查(即从出口走向进口)。 2. 喜欢走迷宫,体验探究成功的喜悦。 3. 通过小组合作的形式,运用自己喜欢的的方式表达表现。 4. 初步培养幼儿有礼貌的行为。 【活动准备】 1. 幼儿会认读数字l ~10,知道数序。

2. 教具:电脑课件或图片《走迷宫》一套(大鱼迷宫(图1),数字迷宫(图2),公园迷宫(图3)]。 3. 学具:第1组,“菠萝迷宫”图(图4)、盒子、笔;第2 组,“灰熊迷宫”图(图5)、盒子、笔;第3组,“到海边去”图(图6)、盒子、笔;第4 组,“去吃汉堡"图(图7)、盒子、笔;第5 组,“送 花给妈妈”图(图8)、盒子、笔。 4. 每个幼儿胸前挂一个夹子。 5. 在数学角投放多种已塑封的迷宫图,水彩笔,抹布。 【活动过程】 一、感知了解 1. 揭示课题,引发兴趣。 师(操作课件或图片):欢迎来到迷宫王国。今天,我们要在迷宫王国里玩闯关游戏。有没有信心获胜? 2. 引导幼儿了解走迷宫的方法。 (1)出示“大鱼迷宫”图。 ①感知线条迷宫的结构,了解走迷宫的方法。 师:这是什么迷宫?这个箭头表示什么?(迷宫的进口。)那个箭头又表示迷宫的什么?(出口。) 师:谁知道迷宫一般是怎么走的?(幼儿自由回答。)师幼(小结):迷宫图,拿到手,先找进口和出口,沿着进口通道走,最后顺利到出口。

C语的迷宫小游戏_源代码

C语言编写的迷宫游戏源代码 #include #include #include #include #include #define N 20/*迷宫的大小,可改变*/ int oldmap[N][N];/*递归用的数组,用全局变量节约时间*/ int yes=0;/*yes是判断是否找到路的标志,1找到,0没找到*/ int way[100][2],wayn=0;/*way数组是显示路线用的,wayn是统计走了几个格子*/ void Init(void);/*图形初始化*/ void Close(void);/*图形关闭*/ void DrawPeople(int *x,int *y,int n);/*画人工探索物图*/ void PeopleFind(int (*x)[N]);/*人工探索*/ void WayCopy(int (*x)[N],int (*y)[N]);/*为了8个方向的递归,把旧迷宫图拷贝给新数组*/ int FindWay(int (*x)[N],int i,int j);/*自动探索函数*/ void MapRand(int (*x)[N]);/*随机生成迷宫函数*/ void PrMap(int (*x)[N]);/*输出迷宫图函数*/ void Result(void);/*输出结果处理*/ void Find(void);/*成功处理*/ void NotFind(void);/*失败处理*/ void main(void)/*主函数*/ { int map[N][N]; /*迷宫数组*/ char ch; clrscr(); printf("\n Please select hand(1) else auto\n");/*选择探索方式*/ scanf("%c",&ch); Init(); /*初始化*/ MapRand(map);/*生成迷宫*/ PrMap(map);/*显示迷宫图*/ if(ch=='1') PeopleFind(map);/*人工探索*/ else FindWay(map,1,1);/*系统自动从下标1,1的地方开始探索*/ Result();/*输出结果*/ Close(); } void Init(void)/*图形初始化*/ {

最简单的c语言迷宫游戏实验报告

一、内容: 1、本游戏主要实现了人控制键盘方向键使小人(*)走出迷宫。 2、具有的功能: 1)、在游戏菜单里人可以选择不同难度的游戏进行游戏; 2)、在游戏过程中,可以通过键盘方向键使小人移动,走出迷宫; 3)、在游戏过程中,当人碰到墙壁(#)的时候小人过不去; 4)、当人顺利完成游戏之后,输出“========you are win!======”字样,30秒钟后自动返回到游戏菜单; 5)、在游戏过程中,人可以通过按Esc键返回游戏菜单;也可以可以按0直接退出游戏; 6)、在游戏菜单里,按0键可以退出游戏。 3、具体应用: 1)、人主要同过键盘的1,2,3数字键来选择游戏难度; 2)、在游戏中通过Esc键来返回菜单; 3)、同过0键退出游戏。 二、上机环境 操作系统:windows7 开发工具:VC6.0 三、函数调用关系图

四、各函数功能说明 main() 主函数; menu() 游戏菜单; roadcake() 消去小人路径; introduce() 游戏介绍; system(“cls”) 消屏函数; exit(0) 退出游戏; drawmg1() 画初级难度迷宫; drawmg2() 画中级难度迷宫; drawmg3() 画高级难度迷宫; control1() 控制初级难度游戏; control2() 控制中级难度游戏; control3() 控制高级难度游戏; 五、算法流程图 首先定义三个全局数组mg1[20][20]、mg2[30][30]、mg3[30][30]用于画出迷宫的地图;1表示墙(#),0表示空地(); Introduce( )函数里如果按Enter键,则调用menu( )函数,从键盘中输入相应的提示数字,进入难度不同的游戏;游戏的执行在此只初级难度进行描述,其余的难 度与其类似; 选了1后调用system(”cls”)进行清屏;drawmg1()函数进行迷宫的地图的绘

java小游戏源代码

j a v a小游戏源代码 Document number:NOCG-YUNOO-BUYTT-UU986-1986UT

Java小游戏 第一个Java文件: import class GameA_B { public static void main(String[] args) { Scanner reader=new Scanner; int area; "Game Start…………Please enter the area:(1-9)" + '\n'+"1,2,3 means easy"+'\n'+"4,5,6 means middle"+'\n'+ "7,8,9 means hard"+'\n'+"Please choose:"); area=(); switch((area-1)/3) { case 0:"You choose easy! ");break; case 1:"You choose middle! ");break; case 2:"You choose hard! ");break; } "Good Luck!"); GameProcess game1=new GameProcess(area); (); } } 第二个Java文件: import class GameProcess { int area,i,arrcount,right,midright,t; int base[]=new int[arrcount],userNum[]=new int[area],sysNum[]=new int[area]; Random random=new Random(); Scanner reader=new Scanner; GameProcess(int a) { area=a; arrcount=10; right=0; midright=0; t=0; base=new int[arrcount]; userNum=new int[area]; sysNum=new int[area]; for(int i=0;i

初中信息技术七年级《Scratch:小猫走迷宫》公开课精品教案

Scratch《小猫走迷宫》教学设计
刘亚丽 一、教材分析 Scratch 是一门全新的程序设计语言,用其可以很容易的创造交互式故事情节,动画,游 戏,可以大大增加学生的学习兴趣。本课是学生学习的第三课,前两节介绍了 scratch 的界面 和功能,角色的添加、绘制,角色造型的切换,舞台的设置,基本模块的简单应用等,本节课 通过 《小猫走迷宫》 这个生动有趣的实例, 让学生在实践中了解程序设计的思维方式, 熟悉 “动 作、控制、外观、侦测”等模块的用法,提高学生的学习兴趣。本课的内容有承上启下的作用, 为后面程序的编写做了铺垫。b5E2RGbCAP 二、学情分析 本课的教学对象是七年级内初班学生,大部分学生计算机操作水平较低,也是初次接触 scratch 软件, 通过前两节课的学习, 已经掌握了添加、 删除角色, 造型编辑与切换, 对 Scratch 编程创作有了一定的体会,能设计控制角色运动的简单脚本,为本节课的学习奠定了基础。并 且学生对学习本软件很高的兴趣,有利于后续课程的开展。p1EanqFDPw 三、教学目标分析 (一)知识与技能: 1. 学会使用方向键或键盘字母控制角色的运 2.学会使用 3. 能 够 将 4. 会用 , 插入到 模块表达角 , 等模块指令。 条件判断模块中,实现条件的选择功能。 色心里想说的内容。 动。
(二)过程与方法: 1.通过案例分析,让学生理解程序设计的思维方式。 2.通过教师演示、引导,学生自主练习,合作探究,实现知识的拓展和迁移。 3.通过自己编写游戏,激发学生学习兴趣,感受成功喜悦。 (三)情感态度价值观: 1.激发创作热情,建立科学的思维方式。 2.培养自主学习、合作学习的精神。 四、教学重点:“动作、控制、侦测”等模块的用法。 五、教学难点:对循环语句“重复执行”和条件判断语句“如果”的应用,能为游戏角色搭建

java课设走迷宫(含代码)

目录1.设计目的 课程设计的目的 2.总体设计 设计思路 设计方法 3.关键技术 4.程序流程 5.主要源代码 6. 运行结果及结论 7. 参考文献

1.设计目的 课程设计的目的 随着科技进步,时代发展,计算机走进了大家的生活。计算机程序强大的功能为使用者提供服务,编程语言也变得越来越流行。 Java 语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。 为了进一步巩固课堂上所学到的知识,深刻把握 Java 语言的重要概念及其面向对象的特性,熟练应用面向对象的思想和设计方法解决实际问题的能力,也是为了增加同学们娱乐游戏选择而开发了一个适合学生的,能提升思考力的迷宫冒险游戏,这既锻炼了动手能力,还能进行消遣娱乐,可谓一举两得。 2.总体设计设计思路 根据对游戏系统进行的需求分析,本系统将分为 6 个模块:分别是迷宫 主界面模块、记时设计模块、迷宫设计模块、道路和障碍设计模块、动漫冒险者设计模块、出入口设计模块。实现的功能有:

(1)迷宫的选择 玩家可以根据自身需求来进行选择简单迷宫、中等迷宫、难度迷宫三类中选择一类迷宫进行游戏。 (2)选择道路和障碍的图像 玩家可以根据个人喜好对迷宫中的道路和障碍的图片进行选择,但是图片的格式有规定,必须是“ jpg ”或“ gif ”格式的。 (3)游戏记时 当玩家控制迷宫中的动漫人物进行游戏时,计时器就开始进行记时,直 到动漫人物到达出口时,记时结束,并在屏幕上显示游戏用时。 (4)开始游戏 玩家将鼠标移动至迷宫中的动漫冒险者,即可看到“单击我然后按键盘 方向键”,单击后,游戏开始。玩家即可通过键盘上的方向键进行游戏。 (5)游戏结束 玩家控制动漫冒险者移动至迷宫地图的出口处时,游戏的计时器停止计时,并弹出信息框“恭喜您通关了” ,游戏结束 (6)冒险脚步声 玩家单击动漫冒险者后,便可以用键盘方向键进行控制。动漫冒险者每移动一步便会发出一声“嘟”的响声。

扫雷游戏Java源代码

扫雷游戏Java源代码 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.Timer; public class ScanLei1 extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private Container contentPane; private JButton btn; private JButton[] btns; private JLabel b1; private JLabel b2; private JLabel b3; private Timer timer; private int row=9; private int col=9; private int bon=10; private int[][] a; private int b; private int[] a1; private JPanel p,p1,p2,p3; public ScanLei1(String title){ super(title); contentPane=getContentPane();

幼儿园大班游戏:走迷宫

大班游戏:走迷宫 【设计意图】 走迷宫能有效地提高幼儿的有意注意和空间智能,帮助幼儿学会整体观察、全方位思考,培养幼儿逆向思维能力及沉着冷静、敢于挑战的品质等。 我班幼儿对走迷宫有一定经验,但能力参差不齐。有的幼儿能迅速判断并选择通畅的路径走出迷宫;有的幼儿很容易迷失方向,多次“碰壁”后才能走出迷宫;有的幼儿急于求成,缺乏一定的耐心,等等。基于此,我们设计了这个活动,将数学学习融入走迷宫游戏中,让幼儿在轻松愉快又富有挑战的情境中,提升经验,形成策略,巩固走迷宫的方法。 【活动目标】 1.掌握走迷宫的一般方法(从进口走向出口;遇到岔路口选路线;遇到死胡同回岔路口换条路线走等),学会反向检查(即从出口走向进口)。 2.喜欢走迷宫,体验探究成功的喜悦。 【活动准备】 1.幼儿会认读数字l~10,知道数序。 2.教具:电脑课件或图片《走迷宫》一套(大鱼迷宫(图1),数字迷宫(图2),公园迷宫(图3)]。 3.学具:第1组,“菠萝迷宫”图(图4)、盒子、笔;第

2组,“灰熊迷宫”图(图5)、盒子、笔;第3组,“到海边去”图(图6)、盒子、笔;第4组,“去吃汉堡"图(图7)、盒子、笔;第5组,“送花给妈妈”图(图8)、盒子、笔。 4.每个幼儿胸前挂一个夹子。 5.在数学角投放多种已塑封的迷宫图,水彩笔,抹布。 【活动过程】 一、感知了解 1.揭示课题,引发兴趣。 师(操作课件或图片):欢迎来到迷宫王国。今天,我们要在迷宫王国里玩闯关游戏。有没有信心获胜? 2.引导幼儿了解走迷宫的方法。 (1)出示“大鱼迷宫”图。 ①感知线条迷宫的结构,了解走迷宫的方法。 师:这是什么迷宫?这个箭头表示什么?(迷宫的进口。)那个箭头又表示迷宫的什么?(出口。) 师:谁知道迷宫一般是怎么走的?(幼儿自由回答。) 师幼(小结):迷宫图,拿到手,先找进口和出口,沿着进口通道走,最后顺利到出口。 ②个别幼儿尝试。 师:谁会走“大鱼迷宫”?(先请个别幼儿上来“行走”,然后师幼一起分析如何很快找到出口和进口,最后请一位幼儿用水彩笔在迷宫上画出路线。)

C语言的图形编程应用—迷宫游戏

课程设计报告书 题目C语言的图形编程应用—迷宫游戏 系别计算机工程系 专业计算机科学与技术 班级 姓名 指导教师 下达日期2011 年12 月14 日 设计时间自2011年12月19日至2011年12月30日

指导教师评语

课程设计任务书

目录 Ⅰ.程序设计目的 (3) Ⅱ.运行环境 (3) Ⅲ.程序功能 (3) Ⅳ.程序设计内容 (3) Ⅳ.1设计界面 (3) Ⅳ.2设计思路 (3) Ⅳ.3流程图 (4) Ⅳ.4主要功能模块 (4) Ⅴ.小结与启发 (10) Ⅵ.参考文献 (11)

Ⅰ.程序设计目的 通过典型实例―——迷宫问题,加深对递归算法的理解和编制,掌握数组的运用。 Ⅱ.运行环境 主要在Windows 2000/XP操作系统TC下运行。 Ⅲ.程序功能 迷宫是深受大家喜爱的游戏之一,一般设计迷宫为二维平面图,将迷宫的左上角做入口,右下角做出口,求出从入口点到出口点的一条通路,作为线性结构的典型应用,大多是用非递归方法实现,输出用0代表通路,1代表墙壁。而本程序生成一个美观逼真的迷宫图,它是随机生成的且迷宫大小可以改变,迷宫的大小为N*N,N预定义为常数,修改N的值可以改变迷宫的大小(只要不超过屏幕显示范围),而程序不必做修改。程序采用了两种运行方式:一种系统自动运行探索,用递归方法实现;一种是由人工操作探索通路,这利用了手动操作8个代表不同的方向的键位来实现。用白色表示可走的路,棕色表示墙壁不可以通过。 Ⅳ.程序设计内容 Ⅳ.1设计界面 系统运行首先出现提示字符串“Please select hand(1)else auto”,询问是选择人工探索还是系统自动探索,当用户输入字符1按回车键后出现一个迷宫图,红色矩形块(表示探索物)出现在左上角,这是可以代表8个方向的字符选择通路,遇到墙壁不能通行,按回车键结束探索,如果这时探索物移动到右下角出口,则显示找到通路信息,否则显示没找到通路信息。如图1为人工探索通路的界面。 在提示信息后,如果输入的字符不是1,则系统自动查找通路,如果没有找到通路,则显示没有找到通路信息。如果找到通路,则用红色标记走过的路径。 图1 Ⅳ.2设计思路 程序首先要考虑迷宫的表示,这是一个二维关系图,典型的存贮储方式是选择二维数组,数组元素的值只有两种状态,所以取值为0或1,0表通路,1表示墙壁,这里取名为map。图形的显示就可以根据数组元素的值来确定。如果是人工探索,则根据按键来确定探索物的位置坐标,

Java课程设计走迷宫

Java语言与面向对象技术课程设计报告 ( 2014 -- 2015年度第1 学期) 走迷宫

目录 目录 ...................................................................................................... 错误!未定义书签。 1 概述.................................................................................................. 错误!未定义书签。课程设计目的 ........................................................................... 错误!未定义书签。课程设计内容 ........................................................................... 错误!未定义书签。 2 系统需求分析 .......................................................................................... 错误!未定义书签。系统目标 ................................................................................... 错误!未定义书签。主体功能 ................................................................................... 错误!未定义书签。开发环境 ................................................................................... 错误!未定义书签。 3 系统概要设计 .......................................................................................... 错误!未定义书签。系统的功能模块划分 ............................................................... 错误!未定义书签。系统流程图 ............................................................................... 错误!未定义书签。4系统详细设计 ........................................................................................... 错误!未定义书签。系统的主界面设计 ..................................................................... 错误!未定义书签。 MAZE的设计.................................................................... 错误!未定义书签。 PERSONINMAZE的设计................................................... 错误!未定义书签。 WALLORROAD的设计 ..................................................... 错误!未定义书签。 MAZEPOINT的设计 ......................................................... 错误!未定义书签。 SOUND的设计 ................................................................. 错误!未定义书签。 RECORD的设计................................................................ 错误!未定义书签。 5 测试........................................................................................................... 错误!未定义书签。测试方案 ................................................................................... 错误!未定义书签。测试结果 ................................................................................... 错误!未定义书签。 6 小结........................................................................................................... 错误!未定义书签。参考文献....................................................................................................... 错误!未定义书签。

C程序课程设计报告—走迷宫

C程序课程设计报告—走迷宫 一课题分析 1.1 设计要求 走迷宫:绘制和选择迷宫地图,系统能够自动寻找出口,支持鼠标和键盘操作。通过画图函数设定迷宫,运用数据结构的相关知识,利用一定的算法,实现单步找寻迷宫出口的操作。 1.2 实现功能 小游戏,游戏者从左侧入口处走到右侧的出口处,则胜;中途退出,则败。 二整体设计 2.1框架设计 1.定义操作键键码,用#define实现。 2.系统BGI初始化模块: 3.画出迷宫模块:其中包括边框、出口、入口、墙壁等相关信息;用函数drawmaze()实现此操作。 4.定义迷宫中的人模块:用函数move()实现此操作。实现点的移动,并判断是否到达出口。 5.退出系统模块:用if函数进行判断,如胜则输出-You win,如败则输出you lose.用函数getch()查看结果。 三详细设计 3.1界面设计 此游戏界面采用图形设计。 主界面设计如下:

图1 走迷宫图3.2结构设计: 用if语句实现人的坐标移动和判断游戏者输赢。 四总结 参考文献 暂无 附录#include #include /*定义操作键键码*/ #define UP 0x4800/*上移--方向键up*/ #define DOWN 0x5000/*下移--方向键down*/ #define LEFT 0x4b00/*左移--方向键left*/ #define RIGHT 0x4d00/*右移--方向键right*/ #define ESC 0x011b #define midx getmaxx()/2 #define midy getmaxy()/2

小游戏源代码

/************************************ * Desc: 俄罗斯方块游戏 * By: hoodlum1980 :30 ************************************/ #include <> #include <> #include <> #include <> #include <> #include <> #define true 1 #define false 0 #define BoardWidth 12 #define BoardHeight 23 #define _INNER_HELPER /*inner helper method */ /*Scan Codes Define*/ enum KEYCODES { K_ESC =0x011b, K_UP =0x4800, /* upward arrow */ K_LEFT =0x4b00, K_DOWN =0x5000, K_RIGHT =0x4d00, K_SPACE =0x3920, K_P =0x1970 }; /* the data structure of the block */ typedef struct tagBlock { char c[4][4]; /* cell fill info array, 0-empty, 1-filled */ int x; /* block position cx [ 0,BoardWidht -1] */ int y; /* block position cy [-4,BoardHeight-1] */ char color; /* block color */ char size; /* block max size in width or height */ char name; /* block name (the block's shape) */ } Block; /* game's global info */ int FrameTime= 1300; int CellSize= 18; int BoardLeft= 30; int BoardTop= 30; /* next block grid */ int NBBoardLeft= 300;

Java小游戏俄罗斯方块附完整源代码_毕业设计

**** 届毕业设计Java小游戏俄罗斯方块

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 摘要 在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。 俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,(控制键的实现是由键盘的方向键的事件处理实现)。然后程序根据这七种方块堆叠成各种不同的模型。 论文描述了游戏的历史,开发此游戏的环境,游戏开发的意义。遵循软件工程的知识,从软件问题定义开始,接着进行可行性研究、需求分析、概要设计、详细设计,最后对软件进行了测试,整个开发过程贯穿软件工程的知识体系。 此次设计在Microsoft Windows 7系统下,以Java为开发语言,在eclipse开发平台上进行游戏的设计与实践。从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我在设计中在一个图片框中构造了一些的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个欲览窗体中提前展示形状供用户参考,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,最后就可以得出用户的分数。 关键词:游戏设计,算法,数组,事件

java小游戏源代码

Java小游戏 第一个Java文件: import public class GameA_B { public static void main(String[] args) { Scanner reader=new Scanner; int area; "Game Start…………Please enter the area:(1-9)" + '\n'+"1,2,3 means easy"+'\n'+"4,5,6 means middle"+'\n'+ "7,8,9 means hard"+'\n'+"Please choose:"); a rea=(); s witch((area-1)/3) { c ase 0:"You choose easy! ");break; c ase 1:"You choose middle! ");break; c ase 2:"You choose hard! ");break; } "Good Luck!"); G ameProcess game1=new GameProcess(area); (); } } 第二个Java文件: import import public class GameProcess { int area,i,arrcount,right,midright,t; int base[]=new int[arrcount],userNum[]=new int[area],sysNum[]=new int[area]; Random random=new Random(); Scanner reader=new Scanner; GameProcess(int a) { area=a; arrcount=10; right=0; midright=0; t=0; base=new int[arrcount]; userNum=new int[area]; sysNum=new int[area]; for(int i=0;i

相关文档
最新文档