贪吃蛇的java代码分析(一)

  • 自我审视

       最近自己学习java已经有了一个多月的时间,从一开始对变量常量的概念一无所知,到现在能勉强写几个小程序玩玩,已经有了长足的进步。今天没有去学习,学校里要进行毕业答辩和拍毕业照了,于是请了几天的假,自己也就有了一点空余的时间。回想这一个多月,自己做到好的地方是把大部分时间都用在了看书和码代码上,学习的重点放在了追求对知识的理解和内容的广度之上。书籍方面阅读了《java核心技术》和《java编程思想》,虽然说没有理解全部的内容,《编程思想》一书也只看了300多页,但面向对象部分、集合部分,书上的分析对自己进行理解带来了巨大的帮助。java之外学习了一点数据库和linux的知识,虽然极浅,但脑中对这两方面的知识还是有一些初步的印象了。当然,自己也有许多不足的地方,首先就是java一些技术的运用不够,也就是项目做的不多。经常会出现这么一种情况:自己能说出hashMap底层的运行状况,但码代码时老是想不到用它,结果导致大量的功夫堆砌了很多无用代码。这是自己很欠缺的一个方面,所以自己平常也要多花时间安排一下看书和练习的时间分配了。
    
  • 思想分析
       自己想做这个小游戏有几个原因,第一个是希望检视一下自己的学习水平,贪吃蛇虽然是很简单的游戏,但我想能帮自己更好的整理代码的逻辑以及各方面,能看看自己有什么不足的地方(至少现在我弥补了一些知识上的漏洞)。第二个原因嘛,其实是上课的时候有一个同学做了一个坦克大战的游戏,虽然极其简陋(逃,但其中的思想和他的学习精神也让我很佩服。所以我总归是不服,自己也尝试着去理解和copy。
       当然,我并没有坐在椅子上,什么也不做凭空想了一个游戏出来,自己水平和思想很有限,并没有达到随手撸代码的地步。自己做这个游戏参考了很多人的代码,其中很多人代码对我帮助很大。大家感兴趣的话可以去网上搜搜,会发现我的代码和某些人的相似程度很高,因为基本上我整个贪吃蛇的思路都是照着前辈的思想来写的,自己并没有什么独创性的地方。这样说其实很惭愧,但转念一想,自己0基础,刚学编程也没有多少时间,参考前人的思想(代码)来学习也没有什么不好意思的。借口一找,心理就平衡多了。
    
  • 你怎么废话这么多?
       说了这么多,其实也是想把一些心里的话都写出来,这样自己在思考的时候也会更有逻辑和效率。至于要写这几篇文章,是因为自己在学这个游戏的时候都是自己逐步理解和想的,我发现网上并没有详细的分析。当然这样一个简单的项目,没有用到什么复杂的技术,都是一些很基本、很简单的技术和思想啦。我之前也写过几篇微博,都是一些简单的数据结构和算法的代码。但我后来一想,自己只是简单地贴代码,没有更深入的讨论或者研究,那自己写的东西就没有多少意义。既然写的都是代码,那为什么不去看书呢?所以我想我可以把自己理解的过程都写下来,这样可以帮助和我一样的编程初学者去更快的理解和进步,实践是增强技术(还有信心)最快的方法了。除此之外也可以看看自己还有哪些部分是囫囵吞枣的,毕竟写出来让别人理解要比自己掌握难得多。接下来几篇自己就准备写下整个游戏的分析过程了,希望自己拙劣的表达能传达本意,也希望大神轻喷。
    



时间: 2024-12-20 09:57:42

贪吃蛇的java代码分析(一)的相关文章

贪吃蛇的java代码分析(二)

代码剖析 贪吃蛇是一款十分经典的小游戏,对初入coding的朋友来说,拿贪吃蛇这样一个案例来练手十分合适,并不高的难度和成功后的成就感都是学习所必须的.下面我将依照我当时的思路,来逐步分析实现的整个过程. 让我们逐一分析.首先,整个游戏最基本的元素是地图.在java中用于绘图的类是swing和awt,在这里主要用到swing类.swing中用于窗口显示的类有JFrame及其子类.JFrame可以直接添加组件,但其本质是将组件添加到JFrame中的一个默认面板里,为了代码清晰,我会使用JPanel

java代码分析及分析工具

java代码分析及分析工具 一个项目从搭建开始,开发的初期往往思路比较清晰,代码也比较清晰.随着时间的推移,业务越来越复杂.代码也就面临着耦合,冗余,甚至杂乱,到最后谁都不敢碰. 作为一个互联网电子商务网站的业务支撑系统,业务复杂不言而喻.从09年开始一直沿用到现在,中间代码经过了多少人的手,留下了多少的坑,已经记不清楚了,谁也说不清了. 代码的维护成本越来越高.代码已经急需做调整和改善.最近项目组专门设立了一个小组,利用业余时间做代码分析的工作,目标对核心代码进行分析并进行设计重构. 代码分析

HDFS API的java代码分析与实例

HDFS API的java代码分析与实例 1.HDFS常用的方法,我已经写好,我们看一下 // Create()方法,直接在HDFS中写入一个新的文件,path为写入路径,text为写入的文本内容 public static void  Create(String path,String text) throws IOException {             Configuration conf=new Configuration();                  conf.set(

贪吃蛇C语言代码

贪吃蛇C语言代码 贪吃蛇C语言代码 手动贪吃蛇 智能贪吃蛇 1.手动贪吃蛇 /*蛇越长跑得越快*/ /*作者:SGAFPZ*/ #include <stdio.h> #include <windows.h> #include <stdlib.h> #include <math.h> //#include <unistd.h> #include <conio.h> #include <string.h> #include &

Java实现贪吃蛇游戏【代码】

花了两个下午写了一个贪吃蛇小游戏,本人想写这游戏很长时间了.作为以前诺基亚手机上的经典游戏,贪吃蛇和俄罗斯方块一样,都曾经在我们的童年给我们带来了很多乐趣.世间万物斗转星移,诺基亚曾经作为手机业的龙头老大,现如今也一步步走向衰落,被收购,再过不久估计就要退出手机业务了,而贪吃蛇这款游戏也基本上没人玩了,甚至在新一代人的印象中都已毫无记忆了...但是,这款游戏在它基础上经过改造其实可以弄出很多花样,也确实可以在一定程度上锻炼自己的编程能力.前不久十分火热的贪吃蛇大作战其实就可以看做是在这款游戏的基

js贪吃蛇 纯手打 代码比较复杂 自己瞎弄的 bug 比较多 自己一点一点排除弄 完全原创

//虽然代码没有别人写的简单,但是这是自己的思想,通过这次实例,学到了很多,也发现了很多不足,努力学习啊,小小的贪吃蛇也包含了很多东西还有 //好多问题需要解决,比如,如何判断蛇头碰到蛇身,如何让食物不出现在蛇的身上等,欢迎大家一起探讨 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt

贪吃蛇 HTML5 Canvas代码

首先建立一个二维类 function Class_Dim(cx, cy){ var x = cx; var y = cy; this.getx = function(){ return x; }; this.gety = function(){ return y; }; this.setx = function(tx){ x = tx; }; this.sety = function(ty){ y = ty; }; }; 然后设置一些全局变量 var gameRunning = true;//游

java 代码分析工具——JDepend

最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. 百科上的介绍,我竟然都看懂了,那就不找其他地方的资料了. JDepend 一个开放源代码的可以用来评价Java程序质量的优秀工具(定义),它遍历Java class的文件目录,以Java包(package)为单位,为每一个包/类自动生成 包的依赖程度(怎么做的),稳定性,可靠度等的评价报告,根据这些报告,我们可以得到包或类之间的依赖关系,并分析出包的稳定程度,抽象程度,是否存在循环依赖关系 等(用途

【Java代码分析和CPU高的方法分析】

一.top之负载高 top -H -p pid  首先看load average   数值若小于0.7*CPU个数,则系统工作正常,如果超过这个值,甚至达到cpu核数的四五倍,则系统的负载就说明偏高且存在进一步升高的趋势,就需要进一步定位具体原因.通过vmstat命令查看cpu的上下文切换次数, 上下文切换次数发生的场景主要有如下几种:1.时间切片用完,cpu正常调度下一个任务2.被其他优先级更高的任务抢占3.执行任务碰到I/O阻塞,挂起当前任务,切换到下一个任务4.用户代码主动挂起当前任务让出