寒假答辩作品:Java小游戏

目录

  • java入门小游戏【test】

    • 游戏界面
    • 前言 (可直接跳到程序介绍)
      • 前期入门小项目
      • 前期收获
      • 后期自创关卡
      • 后续

java入门小游戏【test】

游戏界面

github地址: https://github.com/404name/WinterReplyWorks

网盘(提取码pzgt):https://pan.baidu.com/s/1-JoHOCKYl_56fKCzhEmMvg

前言 (可直接跳到程序介绍)

前期入门小项目

过年这段时间在家写了两个C语言的大程序,当初在学校立的flag就是用C写一个游戏,一个程序。

游戏完成了:https://www.cnblogs.com/404name/p/12234419.html感觉想法很好,但就是操控有点麻烦

而另一个程就另作他用了,所以就不介绍了。

之前学过python,但没什么实质性的作品,为此思考寒假其实还是什么都没学到的。仔细思考了很久。

还是决定走java,贴切目前学过的C,看基础部分实在没意思,在家也不是沉得心去琢磨java的基础用

法,就想着直接上项目吧。因为C++面向对象的编程其实我也是没太多接触的,当接手项目时其实自己

也是很懵的。这时候我开始在github上找我能接受理解的小项目,然后正巧在b站

看到了这个教学,然后就开始跟着去了解java的一些操作。

这时候才发现,java其实本质和C还是大不一样的。

几小时能看完的视频,我大概跟着弄了一天(配置环境,查找用法,de莫名其妙的bug);

终于在晚上成功用exe4j打包出了我的第一个简易的JAVA小游戏。

这个大概就是个熄灯问题的游戏,你点击一个地方,他的上下左右中间都会改变一个面,然后要实现全部

翻回来,为此我还临时写了个C语言代码去跑结果。(C语言程序也在游戏包里面)。

前期收获

大概明白了,入门阶段遇到的bug是最手足无措的,编译器界面莫名其妙给你报错,百度还是一些看不懂的名词,哈哈太刺激了。。

我还在教学视频了发现了许多不足,比如他点一个地方会改变上下左右中间5个,然后比如角落他只会

改变 3个 或者 4个,因为他建立的是一维数组,他居然用了将近70行的枚举去枚举每一类。

然而只要把一维转成二维(二维数组本质其实就是一维),然后加个next【5】【2】移动判断,10行

就能解决。但可能是讲给初学者听的,所以就怎么简单怎么来,但,,这里也是我唯一可以体现我学

过编程的地方,后面就全部都是惊讶与自闭了。

我最佩服的面对对象编程就是这个:

Start_click listener = new Start_click(); // 实例化监听器
JButton reset = new JButton("重置");
reset.addActionListener(listener);

简直了!!把鼠标实体化,然后把鼠标加在一个按钮上,然后只要判断if(e.getSource() == reset)

就能轻松的实现交互,想起来我C语言都是要先另建立一个map储存数据,然后再读取返回,而java直

接短短3行就能搞定。

然后感觉打开了新世界大门,十分佩服以前的人能把底层代码一步步进化到封装的对象和类操作。

再进化下感觉直接说 把监听器加在新键按钮上 编译器都能实现。

这里我学会了好多东西,建立窗口,把对象像拼积木一样搭载在上面,学习ps切割图片,学习如何打包。

当然也遇到了许多困难。

比如很自闭的搞不清包,类,static,public。

一开始也搞不清这个java怎么走的流程(看教学视频“哦,这是主方法,调用另一个java的.......哦,我懂了”,然后来写程序时“这特么是什么,这怎么结束啊,这到底怎么走的啊......”)

最神奇的是我搞不清图片怎么操作(后来才搞清)

就这样我大概写完了最初的框架(这里能播放音乐,实现效果,和教学视频的一模一样了。mid格式的音乐,1分钟的歌曲他能给压缩到3kb,神了,然而音质,,绝了)

这里仅仅实现了,我游戏第七关的效果。后来就进入了自闭的自己创造模式了。

后期自创关卡

熄灯问题拓展

就自己会基础操作后,就跃跃欲试。这时候我的文件是 一个mygame.java,一个music.java

我先是尝试在基础原来关卡的基础上改变下熄灯方式,这不就来了几个关卡了嘛。

原先是点一个地方 改变上下左右自身,通过巧妙的控制next数组,就轻松的写出了几个关卡,但问题

来了,怎么跳关卡?要说是在C语言里面,我能拿出好几种方案,但一到这里,我连函数递归啥的都搞

不清了,原因是监听器太混淆视听了,我一个函数只会走一次,但监听器在上面,它就总都会反应

(其实就是我没及时删除监听器),导致切换关卡25个方格变成50个,还弹出了新的窗口,按键还没

用。这就很绝望,然后各种失败后,才搞懂了,应该跨文件调用初始的jf窗口,然后设置静态等等。

但这里也只是开头,马上我把设置的4个关卡发现,4个java是多余的,合并了一下,因为是同类游戏。

新游戏拓展

后来我就在想什么游戏可以搭在这个框架上,显然我想到了以前老手机上的一个游戏九宫格拼图。

直接上图,只要改变一下熄灯规则就变成新游戏了!原本的是按下一个按钮检索上下左右自身是否合

法,然后改变图片,这些图片是固定好的。而我只要变成检索上下左右是否有 空白图标的就交换就实

现了游戏。然后问题是怎么随机初始化游戏,有没有什么算法可以实现25个数随机填入25个空。

后来放弃了,因为它会卡位,就像魔方,你必须在它还原的基础上打乱它,它才能还原。把它拆卸后随机

重装是很难复位的,或许有时候也不能复位。所以随机方法就是系统后台在它还原的基础上随便按下100-1000次

思路我有,就随机生成一个1-5的数对应方向,每次交换一个位置后,自动挪到下一个可移动位置再重复循环。

但毕竟是新语言,不能像C一样能达到想到啥干啥。

所以我放弃了,使用了固定的开局。

但作为新时代的bug maker,怎么能一个一个的人工随机填入呢。

我使用的是差位填入,就是还原图往后移动几格的基础上人工交换1 2个就行了。

然后我加入9 宫格 16宫格,ps切好的图片,下一关按钮, 计步器按钮。实现起来简直简单的不要。这时候7 + 1个关卡就写完了。

实现切换关卡切换音乐

但是,这么丰富的内容,怎么能搭配mid格式的音乐呢。

这时候我又掉进了另一个坑,在各种博客辗转,加载了jar包,试过提高mid音质,都没用。

我那时候就想找一个直接调用 函数名(地址) 就能播放的简单代码。最后唯一找到的还是wav格

式播放器,纯代码实现,但问题来了,我看不懂。。我music song = new music; song.play();

它就播放了,还停不下来,还只能在源文件里改动。那岂不是我要写8个音乐源文件?

后来自己一步步尝试改造,终于在它的基础上写出了我想要的音乐类。而且直接调用song.aay.stop();

就能随时停下。

这时候我就基本完成了剩余内容:不同关卡不同音乐,音乐可开关,开关按钮状态会改变。

后续

待更

原文地址:https://www.cnblogs.com/404name/p/12345428.html

时间: 2024-10-01 07:20:28

寒假答辩作品:Java小游戏的相关文章

寒假答辩作品——掘地求升C语言版

寒假答辩—掘地求升(C语言版) 前言 这个是作为寒假答辩作品写的. 之前考虑过用Unity写个游戏,但毕竟不熟悉C#,感觉几乎都是在套模板,而且写着不顺手,有想法却只能 看着C#发呆,很是无奈,所以决定还是选熟悉的C语言写一个大程序.正愁没灵感的时候,我突然看见了它: 然后我开始了几天快乐并痛苦的自闭抡锤子之旅,然后又痛苦并快乐的用C写下了这个游戏qwq. github代码:https://github.com/404name/C-game/blob/master/掘地求升 答辩网页:https

《Java小游戏实现》:坦克大战(续一)

<Java小游戏实现>:坦克大战(续一) 上篇博文(http://blog.csdn.net/u010412719/article/details/51712663)只介绍到了能够控制一个坦克在4个方向上移动就结束了,今天就在此基础上继续完成一个一个的小功能. 完成的功能:根据键盘的按键控制一个坦克在8个方向上移动 要完成这个功能,我们要做一下几个事情 1.记录下键盘的按键情况,即要重写键盘按下和抬起的监听事件 采用4个boolean变量来记录,按下为true,抬起为false 具体实现的代码

Java小游戏之打飞机(二)

这篇文章本应昨天写的,可是真打算写的时候,CSDN博客维护,导致拖到了今天: 在上篇文章Java小游戏之打飞机(一)中已经详细介绍了该游戏的基本架构和需求分析,今天就详细写一写具体每个类的实现: 1)PlaneGameFrame类    ----游戏的主界面以及一些具体的飞机动作方法.碰撞检测等 代码: package plane; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java

《Java小游戏实现》:坦克大战

<Java小游戏实现>:坦克大战 前面写了一个简单的聊天小程序,今天开始就写一个坦克大战的游戏,算是对Java相关小知识点的一个应用. 这个游戏的完成,我们也是分步完成,逐步累加,一个一个小功能的添加,最后直至完成整个游戏的开发. 第一步:写一个界面 public class TankClient extends JFrame{ public static void main(String[] args) { new TankClient().launchFrame(); } public v

java小游戏代码

一. 需求分析 曾几何时,游戏是海洛因的代名词,让人与玩物丧志联系在一起,一度遭到社会反感和家长抵制.但是,随着互联网的发展,和游戏潜在好处被发现,游戏的价值开始逐渐被社会认可,人们开始接受.认识和了解游戏带来的诸多好处. 现在学生的课业负担重,娱乐时间少,人际交往少,烦恼和压力也因此相应增加.其实玩游戏不仅帮助学生调节情绪,还可以锻炼与提高他们的反应能力和手脑的快速配合能力,同时帮助他们了解电脑和网络知识等,可谓是一举多得.据调查显示,经常玩游戏的学生思维活跃.善于表达.情绪乐观,解决问题时会

《Java小游戏实现》:坦克大战(续2)

<Java小游戏实现>:坦克大战(续2) 相关博文: <Java小游戏实现>:坦克大战http://blog.csdn.net/u010412719/article/details/51712663 <Java小游戏实现>:坦克大战(续一):http://blog.csdn.net/u010412719/article/details/51723570 博文<Java小游戏实现>:坦克大战(续1)中已经实现到了坦克可以发射一颗子弹了.这篇博文在此基础上继续实

《Java小游戏实现》:坦克大战(续三)

<Java小游戏实现>:坦克大战(续三) 相关博文: <Java小游戏实现>:坦克大战http://blog.csdn.net/u010412719/article/details/51712663 <Java小游戏实现>:坦克大战(续一):http://blog.csdn.net/u010412719/article/details/51723570 <Java小游戏实现>:坦克大战(续二):http://blog.csdn.net/u010412719/

java小游戏捕鱼达人,来学做java小游戏!

Java小项目捕鱼达人 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! 捕鱼达人这款游戏,相信和我年纪相仿的朋友,肯定很熟悉.在当时半智能手机和智能手机刚刚出现的时代,手机里有捕鱼达人,汤姆猫,植物大战僵尸等小游戏,是很值得炫耀的,在村里那可是备受小朋友欢迎的.这篇文章来分享一下这款我当时很喜欢玩的捕鱼达人,但是要知道哦,捕鱼达人可是有一点赌博性质的,特别是游戏厅里的,大家可不能沉迷哦!先上图:这个java小游戏,虽然没有很多炫酷的特效和复杂的机制,但是作

java小游戏贪吃蛇大作战:来一起回顾童年回忆!

Java小项目之贪吃蛇 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! 贪吃蛇,绝对是很多朋友的童年记忆.几乎没有人会说没玩过这款小游戏,因为不管在小灵通手机,直板手机,还是半智能手机,甚至是现在的5G手机,都能看见这款游戏的身影.虽然游戏一直在进化,画面,风格,操作方式越来越精细,但是游戏本质的玩法是没变的,例如蛇不断变大,碰到墙壁会死亡等设定.这篇文章来分享java小游戏贪吃蛇:部分代码展示:这个贪吃蛇小游戏,玩法和操控,都是比较完善的,大家感兴趣的可