java语言实现拼图游戏源代码
拼图游戏源代码

//*关卡开始前 booleanfirstStart=true;//是否首次运行标志 musicNum=1;//音乐不够,以此变量做两首歌更换标志 privatevoiddoStartPa ...{ //*关卡化 lm=LayerManager; puzzlePic=creatPuzzlePic; //*测试用 //puzzlePic=creatTestPuzzlePic;//测试用 lm.append(puzzlePic);
//播放声音 //西门子模拟器不支持下面这段代码,但实体机子完美支持 try ...{ InputStreamin; //in=getClass.getResourceAsStream(\"/res/music\"+stageNum+\".mid\");这是有5首音乐时候使用 //只有两首歌时候使用 (musicNum1) ...{ in=getClass.getResourceAsStream(\"/res/music1.mid\"); [Page] musicNum=2; } ...{ in=getClass.getResourceAsStream(\"/res/music2.mid\"); musicNum=1; } player=Manager.createPlayer(in,\"audio/midi\"); player.LoopCount(10); player.start; } catch(IOExceptione)...{}
/***//**储存损耗时间,普通模式用到*/ privatelongusedTime; [Page] /***//**储存单关通过最短时间*/ privatelongquicklyPassOneStageTime; /***//**游戏过程暂停状态所用标志*/ privatebooleanisGamePaused; /***//**储存显示对象*/ privateDisplaydisplay;
Java语言实现拼图游戏源代码

Java语言实现拼图游戏源代码/** JA V A小游戏-拼图我做的第一个小游戏* Cell类是继承的按钮类,并加上相应图形,形成方格*MyCanvas是一个面板,加载Cell类的对象(方格),是这三个类中的核心*/import java.awt.Rectangle;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JOptionPane;import javax.swing.JPanel;import java.awt.BorderLayout;import java.awt.Button;import java.awt.Choice;import java.awt.Color;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.Icon;import javax.swing.JButton;public class MyMainFrame extends JFrame implements ActionListener { MyCanvas myCanvas;JPanel panelNorth,panelPreview;//定义上方的面板,及预览所需的面板Button start,preview,set;//定义开始,预览,设定按钮Container container;//容器,得到内容面板public MyMainFrame() {//初使化container=this.getContentPane();start=new Button("开始");start.addActionListener(this);preview=new Button("预览");preview.addActionListener(this);set = new Button("设置");set.addActionListener(this);panelPreview=new JPanel();panelPreview.setLayout(null);Icon icon=new ImageIcon("pic_"+MyCanvas.pictureID+".jpg");JLabel label=new JLabel(icon);label.setBounds(0,0,300,300);panelPreview.add(label);panelNorth=new JPanel();panelNorth.setBackground(Color.red);panelNorth.add(start);panelNorth.add(preview);panelNorth.add(set);myCanvas=new MyCanvas();container.add(myCanvas,BorderLayout.CENTER);container.add(panelNorth,BorderLayout.NORTH);this.setTitle("拼图小游戏-明");this.setLocation(300,200);this.setSize(308,365);this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperation(3);}public static void main(String[] args) {// TODO 自动生成方法存根new MyMainFrame();}public void actionPerformed(ActionEvent arg0) {//对三个按钮事件的处理// TODO 自动生成方法存根Button button=(Button)arg0.getSource();if(button==start){myCanvas.Start();}else if(button==preview){if(button.getLabel()=="预览"){container.remove(myCanvas);container.add(panelPreview);panelPreview.updateUI();container.repaint();button.setLabel("返回");}else{container.remove(panelPreview);container.add(myCanvas);container.repaint();button.setLabel("预览");}}else if(button==set){//修改所选图片Choice pic = new Choice();pic.add("小猫");pic.add("小猪");pic.add("云");pic.add("QQ");pic.add("卡通");pic.add("花");int i=JOptionPane.showConfirmDialog(this, pic, "选择图片", JOptionPane.OK_CANCEL_OPTION);if(i==JOptionPane.YES_OPTION){MyCanvas.pictureID=pic.getSelectedIndex()+1;myCanvas.reLoadPictrue();Icon icon=new ImageIcon("pic_"+MyCanvas.pictureID+".jpg");JLabel label=new JLabel(icon);label.setBounds(0,0,300,300);panelPreview.removeAll();panelPreview.add(label);panelPreview.repaint();}}}}class MyCanvas extends JPanel implements MouseListener {boolean hasAddActionListener=false;//设置方格的动作监听器的标志位,TRUE为已经添加上动作事件,FALSE是尚未添加动作事件Cell cell[];//定义方格Rectangle cellNull;//定义空方格区域public static int pictureID=1;//当前选择的图片代号public MyCanvas() {this.setLayout(null);this.setSize(400,400);cellNull=new Rectangle(200,200,100,100);//空方格区域在第三行每三列cell=new Cell[9];Icon icon;for (int i = 0; i < 3; i++) {//为9个方格加载图片,并初使化坐标,形成三行三列for(int j=0;j<3;j++){icon=new ImageIcon("pic_"+pictureID+"_"+(i*3+j+1)+".jpg");cell[i*3+j]=new Cell(icon);cell[i*3+j].setLocation(j*100,i*100);this.add(cell[i*3+j]);}}this.remove(cell[8]);//移除最后一个多余的方格}文章转自上海青大实训:。
java拼图游戏图片插入与分割

//即: CropImageFilter(int x,int y,int width,int height)
cropFilter = new CropImageFilter(j * 200, i * 150,
destWidth, destHeight);
img = Toolkit.getDefaultToolkit().createImage(
int srcWidth = bi.getHeight(); //源图宽度
int srcHeight = bi.getWidth(); //源图高度
if (srcWidth > destWidth && srcHeight > destHeight) {
Image image = bi.getScaledInstance(srcWidth, srcHeight,
new FilteredImageSource(image.getSource(),
cropFilter));
BufferedImage tag = new BufferedImage(destWidth,
destHeight, BufferedImage.TYPE_INT_RGB);
Graphics g = tag.getGraphics();
cols = srcWidth / destWidth;
} else {
cols = (int) Math.floor(srcWidth / destWidth) + 1;
}
if (srcHeight % destHeight == 0) {
rows = srcHeight / destHeight;
java课程设计拼图游戏

• 状态判断
通过调用public void checkStatus()方法来 检测拼图状态,判断是否拼图成功,确定游戏是否结 束。
• 附加功能
调用public void run()方法,给游戏过程添加计时进程。 建立线程,对游戏进行计时,并定义一个方法来对玩家 算分
• 程序界面
• 本游戏在Pintu类中创建应用程序窗体,实 例化绘图容器对象PicPanel和状态栏标签对 象,并引入时间处理机制对键盘事件进行 响应 • 在类PicPanel中实现图片的绘制,使用多线 程机制来计算时间的流逝,并响应鼠标事 件来实现图片的移动。
主程序实现过程
• • • • • • • • 1、定义程序实现所需的绘图容器类面板; 2、定义键盘触发事件,并设置监听器; 3、定义鼠标触发事件,并设置监听器; 4、装载主程序所需图片; 5、编写程序对装载图片进行分割初始化; 6、定义图片分割之后各小图片移动方向及实现方法; 7、对空白区域小图片进行设置; 8、建立线程,对游戏进行计时,并定义一个方法来对玩家算分
• 功能分析
1、由于要计算游戏的时间,需要引入线程,通
过实现Runnable接口和创建Thread类来实现线程 的功能。使用多线程机制来计算时间的流逝。引 入AWT绘图包,实现图片的绘制。 引入事件处理 机制,要求对鼠标事件,键盘事件进行相应,实 现移动图片,预览全图等功能。 2、 按键“Y”实现临时的原图整体预览。 按键 “1或者2或者3”实现大图选择。
Java课程设计
概要设计
• • • • • • • • •
选游功 题戏能 规分 则析
界 面 初 始 化
事 件 处 理
状 态 判 断
附 加 功 能
程 序 源 代 码
基于Java的拼图游戏设计

目录1 开发环境及相关技术的介绍 (1)1.1 开发环境 (1)1.2 Java语言特点 (1)2 游戏实现功能解析及界面 (1)2.1游戏规则介绍 (1)2.2游戏实现功能 (2)2.2.1主窗口界面 (2)2.2.2主窗口菜单 (3)2.2.3 游戏过程中的出现的相关窗体 (6)3 游戏程序实现 (8)3.1 程序类主要功能介绍 (8)3.2 程序源代码 (9)4 小结 (27)基于Java的拼图游戏设计1 开发环境及相关技术的介绍1.1 开发环境操作系统:Microsoft Windows XP程序语言:Java开发环境:JDK-6u6-windows-i586-P1.2 Java语言特点1). 平台无关性Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。
Java的数据类型与机器无关。
2). 安全性Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。
它提供了安全管理器,防止程序的非法访问。
3). 面向对象Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。
4). 分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。
5). 健壮性Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。
Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。
2 游戏实现功能解析及界面2.1游戏规则介绍1)本游戏是一个Java语言的拼图游戏,有一个格子是空的,其他格子内随机放置由要拿来拼图的图片切割成的若干个小图片,图片的切割按照一定的公式计算,因为,该通过单击任意一个与空格子相邻的方块可以把该方游戏中设有拼图游戏的等级,根据不同的等级,按照公式会切割成不同的小图片块数。
积木游戏程序源代码

积木游戏程序源代码一、HTML网页文件名:JMYX6.html<html><head><title>积木游戏JMYX6</title></head><body><applet code="JMYX6.class" width=500 height=500></applet></body></html>二、源代码文件名:JMYX6.javaimport java.applet.*;import java.awt.*;import java.awt.event.*;public class JMYX6 extends Applet implements KeyListener,ActionListener{ Label label=new Label("鼠标点击任一积木,然后用光标键移动它。
");Button b[ ]=new Button[40];int x[ ]=new int[40];int y[ ]=new int[40];String s[ ]=new String[40];public void init( ){ setLayout(null);add(label);label.setBounds(0,0,250,30);int k1=70,k2=70,k3=70,k4=70;for(int i=0;i<40;i++){ b[i]=new Button(String.valueOf(i));if(i%3==0) b[i].setBackground(Color.red);if(i%3==1) b[i].setBackground(Color.blue);if(i%3==2) b[i].setBackground(Color.yellow);b[i].addKeyListener(this); //按钮获得键盘事件监视器b[i].addActionListener(this);add(b[i]);if(i%4==0) { b[i].setBounds(k1,40,30,30);k1=k1+31; }else if(i%4==1) { b[i].setBounds(k2,71,30,30);k2=k2+31; }else if(i%4==2) { b[i].setBounds(k3,102,30,30);k3=k3+31; }else if(i%4==3) { b[i].setBounds(k4,133,30,30);k4=k4+31; } }for(int i=0;i<40;i++){ x[i]=b[i].getBounds( ).x;y[i]=b[i].getBounds( ).y; //获得按钮左上角的x,y 坐标}}public void keyTyped(KeyEvent e){ }public void keyPressed(KeyEvent e){ if(e.getKeyCode( )==KeyEvent.VK_UP){ for(int i=0;i<=39;i++){ if(s[i].equals(String.valueOf(i))){ y[i]=y[i]-2;if(y[i]<=0) y[i]=0;b[i].setLocation(x[i],y[i]);}}}else if(e.getKeyCode( )==KeyEvent.VK_DOWN){ for(int i=0;i<=39;i++){ if(s[i].equals(String.valueOf(i))){ y[i]=y[i]+2;if(y[i]>=300) y[i]=300;b[i].setLocation(x[i],y[i]);}}}else if(e.getKeyCode( )==KeyEvent.VK_LEFT){ for(int i=0;i<=39;i++){ if(s[i].equals(String.valueOf(i))){ x[i]=x[i]-2;if(x[i]<=0) x[i]=0;b[i].setLocation(x[i],y[i]);}}}else if(e.getKeyCode( )==KeyEvent.VK_RIGHT){ for(int i=0;i<=39;i++){ if(s[i].equals(String.valueOf(i))){ x[i]=x[i]+2;if(x[i]>=300) x[i]=300;b[i].setLocation(x[i],y[i]);}}}}public void keyReleased(KeyEvent e){ }public void actionPerformed(ActionEvent e){ for(int i=0;i<40;i++){ if(e.getSource( )==b[i]){ for(int j=0;j<=39;j++)s[j]=b[i].getLabel( );}}}}。
java拼图游戏图片插入与分割

}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//计算切片的横向和纵向数量
if (srcWidth % destWidth == 0) {
cols = srcWidth / destWidth;
} else {
cols = (int) Math.floor(srcWidth / destWidth) + 1;
}
if (srcHeight % destHeight == 0) {
for (int j = 0; j < cols; j++) {
//四个参数分别为图像起点坐标和宽高
//即: CropImageFilter(int x,int y,int width,int height)
cropFilte(j * 200, i * 150,
//读取源图像
BufferedImage bi = ImageIO.read(new File(srcImageFile));
int srcWidth = bi.getHeight(); //源图宽度
int srcHeight = bi.getWidth(); //源图高度
if (srcWidth > destWidth && srcHeight > destHeight) {
批注本地保存成功开通会员云端永久保存去开通
public static void cut(String srcImageFile, String descDir, int destWidth,
java拼图游戏报告

目录1 需求分析 (2)1.1功能需求 (2)1.2系统需求 (2)2游戏详细设计 (3)2.1 程序类主要功能介绍 (3)2.2 程序源代码 (3)1)Arg.java (3)2) ButtonClick.java (4)3) CardFrame.java (5)4) GameOver.java (7)5) Grades.java (8)6) Matrix.java (11)7) MenuFrame.java (12)8) point.java (18)9) Puzzle.java (19)10) ShowImage.java (22)11) Split.java (23)12)FileTest.java (24)13)MusicPlay.java (25)3测试过程 (27)1 需求分析1.1功能需求1)让玩家能够用鼠标控制进行菜单的选择2)玩家可以通过点击空白区域来移动有图方块3)给玩家提供暂停游戏的功能4)提供图片预览,方便玩家查看5)提供图片导入功能,是玩家可以用自己喜爱的图片进行游戏6)提供背景音乐功能,优化玩家的游戏氛围7)提供游戏记录功能,让玩家可以不断挑战自己的水平,激发游戏乐趣8)提供关卡难度选择,使得游戏适应人群更为广泛9)提供游戏帮助功能,帮助玩家更快适应游戏10)游戏成功后能给出提示1.2系统需求1)性能需求:实时性好,可靠性强2)设计约束:1.开发工具:jdk 6.0以上2.运行环境:windows xp以上3.满足所定义的各种需求2游戏详细设计2.1 程序类主要功能介绍该游戏程序中包括11个类。
包括:ButtonClick.class、CardFrame.class、GameOver.class、Grades.class、Matrix.class、MenuFrame.class、point.class、Puzzle.class、ShowImage.class、Split.class、FileTest.class、MusicPlay.class。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java语言实现拼图游戏源代码Java语言实现拼图游戏源代码 /** JAVA小游戏,拼图我做的第一个小游戏* Cell类是继承的按钮类,并加上相应图形,形成方格*MyCanvas是一个面板,加载Cell类的对象(方格),是这三个类中的核心 */ import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseListener;import javax.swing.Icon;import javax.swing.ImageIcon; import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Button;import java.awt.Choice;import java.awt.Color;import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.Icon;import javax.swing.ImageIcon; import javax.swing.JFrame; importjavax.swing.JLabel; import javax.swing.JOptionPane; importjavax.swing.JPanel; import javax.swing.Icon;import javax.swing.JButton;public class MyMainFrame extends JFrame implements ActionListener { MyCanvas myCanvas;JPanel panelNorth,panelPreview;//定义上方的面板,及预览所需的面板Button start,preview,set;//定义开始,预览,设定按钮Container container;//容器,得到内容面板public MyMainFrame() {//初使化container=this.getContentPane(); start=new Button("开始");start.addActionListener(this); preview=new Button("预览");preview.addActionListener(this); set = new Button("设置");set.addActionListener(this); panelPreview=new JPanel();panelPreview.setLayout(null); Icon icon=newImageIcon("pic_"+MyCanvas.pictureID+".jpg");JLabel label=new JLabel(icon); label.setBounds(0,0,300,300); panelPreview.add(label);panelNorth=new JPanel();panelNorth.setBackground(Color.red); panelNorth.add(start);panelNorth.add(preview);panelNorth.add(set);myCanvas=new MyCanvas();container.add(myCanvas,BorderLayout.CENTER);container.add(panelNorth,BorderLayout.NORTH);this.setTitle("拼图小游戏-明");this.setLocation(300,200);this.setSize(308,365);this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperation(3); }public static void main(String[] args) {// TODO 自动生成方法存根new MyMainFrame();}public void actionPerformed(ActionEvent arg0) {//对三个按钮事件的处理 // TODO 自动生成方法存根Button button=(Button)arg0.getSource(); if(button==start){myCanvas.Start();}else if(button==preview){if(button.getLabel()=="预览"){container.remove(myCanvas); container.add(panelPreview); panelPreview.updateUI();container.repaint();button.setLabel("返回");}else{container.remove(panelPreview); container.add(myCanvas); container.repaint();button.setLabel("预览");}}else if(button==set){//修改所选图片Choice pic = new Choice(); pic.add("小猫");pic.add("小猪");pic.add("云");pic.add("QQ");pic.add("卡通");pic.add("花");int i=JOptionPane.showConfirmDialog(this, pic, "选择图片",JOptionPane.OK_CANCEL_OPTION);if(i==JOptionPane.YES_OPTION){ MyCanvas.pictureID=pic.getSelectedIndex() +1;myCanvas.reLoadPictrue(); Icon icon=newImageIcon("pic_"+MyCanvas.pictureID+".jpg");JLabel label=new JLabel(icon); label.setBounds(0,0,300,300); panelPreview.removeAll(); panelPreview.add(label);panelPreview.repaint();}}}}class MyCanvas extends JPanel implements MouseListener {boolean hasAddActionListener=false;//设置方格的动作监听器的标志位,TRUE为已经添加上动作事件,FALSE是尚未添加动作事件Cell cell[];//定义方格Rectangle cellNull;//定义空方格区域public static int pictureID=1;//当前选择的图片代号public MyCanvas() {this.setLayout(null);this.setSize(400,400);cellNull=new Rectangle(200,200,100,100);//空方格区域在第三行每三列cell=new Cell[9];Icon icon;for (int i = 0; i < 3; i++) {//为9个方格加载图片,并初使化坐标,形成三行三列 for(int j=0;j<3;j++){icon=new ImageIcon("pic_"+pictureID+"_"+(i*3+j+1)+".jpg");cell[i*3+j]=new Cell(icon); cell[i*3+j].setLocation(j*100,i*100); this.add(cell[i*3+j]);}}this.remove(cell[8]);//移除最后一个多余的方格}文章转自上海青大实训:谣言:吃太咸了会得病,导语:“人体每日摄入食盐不应过多,否则易患多种疾病。
”这是真的吗,吃太咸了会得病,一、网友评论:1、网友:冰冰 23 岁行政助理我就是一个”重口味“的人,但身体很健康啊~我就是一个特别爱吃咸的人,什么咸菜、咸烧饼都是我的最爱。
大家都说吃太咸对身体不好,可我一点没这么觉得。
前几天我还到医院去体检,各项指标都很正常。
吃咸不会得病的~2、网友:小帅 34岁销售邻居家大爷常年吃太咸,结果得了心血管病。
邻居家有个大爷经常吃咸的东西,大家都劝他不要吃这么咸,可他就是不听。
后来他被检查出了心血管疾病,我想这和常年吃咸有很到关系。
世界卫生组织建议每人每天钠盐摄入量不超过5克二、专家解答:1、世界卫生组织建议每人每天钠盐摄入量不超过5克。
世界卫生组织(WHO)建议每人每天钠盐摄入量不超过5克,而我国现在每人每日食盐约12克、美国提倡的人均2.3克/天宽松了许多。
2、高盐饮食会导致高血压。
营养专家原表示,高盐饮食是高血压的三大原因之一,高盐饮食是我国高血压的最重要的危险因素。
古人就知道“味过于咸,大骨气劳,短肌,心气抑”,即多食咸会影响血液和血液循环,伤及骨骼,并使心功能受到抑制。
盐摄入平均每增加2克,收缩压和舒张压就分别增加2.0mmHg和1.2mmHg。
“有的人以为‘不吃盐没力气’,这是没有道理的。
”专家表示,人对钠盐的依赖,只是长期以来味觉适应了高盐。
除此之外,吃盐还包括酱料、酱油、零食里的盐,因此不放盐放酱油的做法,也同样会摄取盐分。
我们正常人钠的摄入量和排出量时刻处在一个比较平衡的状态,而且钠的排出主要通过我们的肾脏。
如果在日常生活中摄入过多的盐分,钠的摄入量就会增加,这就给肾脏排除钠的功能增加负担。
如果摄入钠的量过多的话,为了保证肾脏的正常功能,也为了保持钠在血液中的浓度不变,就需要多喝水,不过水喝太多的话就会使得血液中的水分有所增加,这就形成了“水钠潴留”的状态。