马里奥杂谈
来源:互联网 发布:粒子群算法伪代码 编辑:程序博客网 时间:2024/06/02 18:35
马里奥线程小游戏实现效果如下:
马里奥实现思路:
首先分包:ui(界面),mario.bean(马里奥人物包),costant(配置文件常量),until(工具包),music(音频,声效)
第一部写界面:
什么添加组件在此也就不多说了,里面一个重要的知识点就是二级缓冲区的创建,为什么要创建这个,动画都是通过界面刷新,实现为了不出现闪屏的问题,创建缓存取,把所有的图片放在缓冲区,一次性画出来代码如下。
这里写代码片public void paint(Graphics g) { /** 第一步创建二级缓冲 **/ Image bg = createImage(this.getWidth(), this.getHeight()); /** 获取背景画笔 */ Graphics bg_g = bg.getGraphics(); //画背景图 bg_g.drawImage(backimg.img, backimg.x, backimg.y, null); //一种类型的东西放在list的集合中,通过遍历一个个画出来 for (int i = 0; i < MyCantent.list.size(); i++) { bg_g.drawImage(MyCantent.list.get(i).img, MyCantent.list.get(i).x, MyCantent.list.get(i).y, MyCantent.list.get(i).width, MyCantent.list.get(i).height, null); } for (int i = 0; i < MyCantent.bulists.size(); i++) { Bullit bullit = MyCantent.bulists.get(i); bg_g.drawImage(bullit.img, bullit.x, bullit.y, bullit.width, bullit.height, null); } bg_g.drawImage(mario.img, mario.x, mario.y, mario.width, mario.height, null); bg_g.drawString("金币数目" + MyCantent.coin_number, 50, 50); g.drawImage(bg, 0, 0, null); }
第二部:实现游戏人物的一些功能:移动 跳,发子弹
第一:创建一mario类,继承Thread,也可以实现Runnabel(接口),本人推荐实现接口,单继承多实现。重写父类run方法。
思路:怎么判断人物的移动的方向呢?说到判断肯定是boolean, 向左isLeft,向右isRight,跳isUp,要移动改变的是x,y坐标值
这里写代码片public class Test { public class Mario{ int x,y,speed; //怎么去改变布尔值,要加一个键盘监听,下面在慢慢道来。 boolean isRight,isLeft,isUp,isJump; //图片 Image img = new ImageIcon("路径").getImage(); public void run(){ while(true){ //线程休眠,这里会报一个异常,不要抛,最好抓。抛要层层向上抛,很麻烦 if(isRight){ x+=speed; //改变人物图片 img = new new ImageIcon("路径").getImage(); }else if(isLeft){ x-=speed; img = new ImageIcon("路径").getImage(); }else if(isUp){ //向上其实是一个跳的功能,写一个方法跳 //没有跳,进来 if(!isJump){ //为了避免连跳,进来就改变布尔值 isJump = true; jump(); } } try{ Thread.sleep(30); }catch(InterruptedException e){ e.printStackTrace(); } } }} public void jump(){ //跳是线程,用匿名内部类开个线程 new Thread(){ public void run(){ while(true){ for(int i=0; i<120; i++){ y+=speed; Untli.MyThread.sleep(10); } for(int i=0;i<120;i++){ y-=speed; Untli.MyThread.sleep(10); } //为了不让人物连跳,加个boolean值 isJump=false; Untli.MyThread.sleep(10); } } }.start();} //程序休眠抽取出来,创建工具类,工具类的的特点:不能new,方法是静态的,通用性,`` public class Until{ //构造私有的 private Until(){} public void myThreadSleep(int mix){ Thread.sleep(mix); }catch(InterruptedException e){ e.printStackTrace(); } } 今天暂时写到这吧,未完待续。}
0 0
- 马里奥杂谈
- 马里奥.巴尔加斯
- 马里奥派对
- 超级马里奥强势来袭
- 马里奥游戏1
- 马里奥吃金币游戏
- 键盘控制马里奥移动
- 马里奥吃金币、消失
- 马里奥吃金币
- 马里奥吃金币
- 马里奥吃金币消失
- 杂谈
- 杂谈
- 杂谈
- 杂谈
- 杂谈
- 杂谈
- 杂谈
- 程序员面试金典——解题总结: 9.17中等难题 17.2判断井字游戏中某个玩家是否赢了游戏
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- Fortran语言初探及Win7 64位下Fortran开发环境配置
- linux 孤儿进程
- int和char
- 马里奥杂谈
- Coursera Big Data系列课程笔记2
- "八皇后"问题 视图 CSS 布局
- Eclipse创建Maven Web工程
- 无穷小微积分的现代化体系是怎样展开的?
- IO流_异常的概述和分类
- Circuit Design 贴片晶振的区分
- 使用Rubymine的ruby on rails 学习历程②
- 初识JavaScript