贪吃蛇的java代码分析(一)
自我审视
最近自己学习java已经有了一个多月的时间,从一开始对变量常量的概念一无所知,到现在能勉强写几个小程序玩玩,已经有了长足的进步。今天没有去学习,学校里要进行毕业答辩和拍毕业照了,于是请了几天的假,自己也就有了一点空余的时间。回想这一个多月,自己做到好的地方是把大部分时间都用在了看书和码代码上,学习的重点放在了追求对知识的理解和内容的广度之上。书籍方面阅读了《java核心技术》和《java编程思想》,虽然说没有理解全部的内容,《编程思想》一书也只看了300多页,但面向对象部分、集合部分,书上的分析对自己进行理解带来了巨大的帮助。java之外学习了一点数据库和linux的知识,虽然极浅,但脑中对这两方面的知识还是有一些初步的印象了。当然,自己也有许多不足的地方,首先就是java一些技术的运用不够,也就是项目做的不多。经常会出现这么一种情况:自己能说出hashMap底层的运行状况,但码代码时老是想不到用它,结果导致大量的功夫堆砌了很多无用代码。这是自己很欠缺的一个方面,所以自己平常也要多花时间安排一下看书和练习的时间分配了。
思想分析
自己想做这个小游戏有几个原因,第一个是希望检视一下自己的学习水平,贪吃蛇虽然是很简单的游戏,但我想能帮自己更好的整理代码的逻辑以及各方面,能看看自己有什么不足的地方(至少现在我弥补了一些知识上的漏洞)。第二个原因嘛,其实是上课的时候有一个同学做了一个坦克大战的游戏,虽然极其简陋(逃,但其中的思想和他的学习精神也让我很佩服。所以我总归是不服,自己也尝试着去理解和copy。
当然,我并没有坐在椅子上,什么也不做凭空想了一个游戏出来,自己水平和思想很有限,并没有达到随手撸代码的地步。自己做这个游戏参考了很多人的代码,其中很多人代码对我帮助很大。大家感兴趣的话可以去网上搜搜,会发现我的代码和某些人的相似程度很高,因为基本上我整个贪吃蛇的思路都是照着前辈的思想来写的,自己并没有什么独创性的地方。这样说其实很惭愧,但转念一想,自己0基础,刚学编程也没有多少时间,参考前人的思想(代码)来学习也没有什么不好意思的。借口一找,心理就平衡多了。
你怎么废话这么多?
说了这么多,其实也是想把一些心里的话都写出来,这样自己在思考的时候也会更有逻辑和效率。至于要写这几篇文章,是因为自己在学这个游戏的时候都是自己逐步理解和想的,我发现网上并没有详细的分析。当然这样一个简单的项目,没有用到什么复杂的技术,都是一些很基本、很简单的技术和思想啦。我之前也写过几篇微博,都是一些简单的数据结构和算法的代码。但我后来一想,自己只是简单地贴代码,没有更深入的讨论或者研究,那自己写的东西就没有多少意义。既然写的都是代码,那为什么不去看书呢?所以我想我可以把自己理解的过程都写下来,这样可以帮助和我一样的编程初学者去更快的理解和进步,实践是增强技术(还有信心)最快的方法了。除此之外也可以看看自己还有哪些部分是囫囵吞枣的,毕竟写出来让别人理解要比自己掌握难得多。接下来几篇自己就准备写下整个游戏的分析过程了,希望自己拙劣的表达能传达本意,也希望大神轻喷。
贪吃蛇的java代码分析(一)的更多相关文章
- 贪吃蛇的java代码分析(二)
代码剖析 贪吃蛇是一款十分经典的小游戏,对初入coding的朋友来说,拿贪吃蛇这样一个案例来练手十分合适,并不高的难度和成功后的成就感都是学习所必须的.下面我将依照我当时的思路,来逐步分析实现的整个过 ...
- 贪吃蛇的java代码分析(三)
代码剖析 在上一篇文章中,我们完成了贪吃蛇部分代码的构造.回头审视我们写的代码与思路,会发现我们遗漏了一个重要的地方,那就是:贪吃蛇的自身移动.想必大家都知道,贪吃蛇自身是会自己移动的,并且会跟随你的 ...
- java代码分析及分析工具
一个项目从搭建开始,开发的初期往往思路比较清晰,代码也比较清晰.随着时间的推移,业务越来越复杂.代码也就面临着耦合,冗余,甚至杂乱,到最后谁都不敢碰. 作为一个互联网电子商务网站的业务支撑系统,业务复 ...
- Java实现贪吃蛇游戏【代码】
花了两个下午写了一个贪吃蛇小游戏,本人想写这游戏很长时间了.作为以前诺基亚手机上的经典游戏,贪吃蛇和俄罗斯方块一样,都曾经在我们的童年给我们带来了很多乐趣.世间万物斗转星移,诺基亚曾经作为手机业的龙头 ...
- Python:游戏:贪吃蛇原理及代码实现
一.游戏介绍 贪吃蛇是个非常简单的游戏,适合练手.先来看一下我的游戏截图: 玩法介绍:回车键:开始游戏空格键:暂停 / 继续↑↓←→方向键 或 WSAD 键:控制移动方向. 食物分红.绿.蓝三种,分别 ...
- 蓝桥杯 贪吃蛇长度java实现
小明在爷爷的私人收藏馆里找到一台老式电脑.居然没有图形界面,只能用控制台编程. 如上图,是游戏时画面截图. 其中,H表示蛇头,T表示蛇尾.#表示蛇的身体,@表示身体交叉重叠的地方. 你能说出现在的贪吃 ...
- java 代码分析工具——JDepend
最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. 百科上的介绍,我竟然都看懂了,那就不找其他地方的资料了. JDepend 一个开放源代码的可以用来评价 ...
- 贪吃蛇(Java实现)
程序效果: 代码: //Snake.java 1 package snake; import javax.swing.*; import java.awt.*; import java.awt.eve ...
- 贪吃蛇Controller Java实现(二)
package cn.tcc.snake.Controller; import java.awt.Point;import java.awt.event.KeyAdapter;import java. ...
随机推荐
- C# 使用 StructLayoutAttribute 时 C# /C++ 内存空间分配与成员对齐问题
1. 使用场景 公共语言运行时控制数据字段的类或结构在托管内存中的物理布局.但是,如果想要将类型传递到非托管代码,需要使用 StructLayout 属性. 2. 内存分配问题. 如果不显示的设置内存 ...
- mac os x 启用apache 和 php
Mac OS X 是自带 Apache 和 PHP 的,但默认情况下并没有开启,此文说明如何启用这两个服务,环境基于 Mac OS X 10.6 Snow Leopard. 启动 Apache 命令行 ...
- js计算散点图方程式
//pointArrayX,pointArrayY 为两个数组,分别为x轴对应的点和y轴对应的点 function getEquationPara(pointArrayX, pointArrayY) ...
- ubuntu 创建用户
http://www.jb51.net/article/45848.htm 创建用户
- SQL的ROW_NUMBER函数
with tabs as ( select ROW_NUMBER() over(partition by customerID order by totalPrice) as rows,custome ...
- 【转】Caffe初试(五)视觉层及参数
本文只讲解视觉层(Vision Layers)的参数,视觉层包括Convolution, Pooling, Local Response Normalization (LRN), im2col等层. ...
- 《图形学》实验七:中点Bresenham算法画椭圆
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画椭圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 50 ...
- C# RFID windows 服务 网络协议方式
上篇话说是串口方式操作RFID设备. 下面介绍网络协议方式. 设备支持断线重连. 那我们的服务也不能差了不是. 所以这个服务类也是支持的哦. 不解释上代码: namespace Rfid { /// ...
- jsp 中登录验证 注销 的模版
用户名密码验证模版 <%@page import="com.jerehedu.bao.User"%> <%@ page language="ja ...
- getFields()和getDeclaredFields()的区别
getFields()获得某个类的所有的公共(public)的字段,包括父类. getDeclaredFields()获得某个类的所有申明的字段,即包括public.private和proteced, ...