来源
今天在整理资料的时候无意中发现了,曾经学习Java的时候写的一个贪吃蛇小项目;
于是心血来潮,打开idea运行一波。emm,不错还可以运行!
但是之前的样式有点丑,单一颜色。所以呢,就顺手进行了一波优化。
所以一个彩色的贪吃蛇就出现了!🌰
看图👀
还可以吧,哈哈哈。
总之感觉还挺好玩的!
项目结构
就很简单,就6个类。
其中蛇的身体使用自定义链表的形式进行储存
private class Node{
int rows;//行
int cols;//列
String dir;//方向
Node pre;//前一个节点
Node next;//后一个节点
private Node(int rows,int cols,String dir){
this.rows=rows;
this.cols=cols;
this.dir=dir;
}
public void drowHead(Graphics g) {
g.setColor(Color.BLUE);
g.fillOval(cols*Config.span, rows*Config.span, Config.span, Config.span);
}
}
使用随机数在绘制的时候,变化蛇的颜色
public void drow(Graphics g) {
double select = Math.random();
if(select<=0.2){
g.setColor(new Color(255,69,0));
}else if(select<=0.4){
g.setColor(new Color(218,112,214));
}else if(select<=0.6){
g.setColor(new Color(0,238,0));
}else if(select<=0.8){
g.setColor(new Color(0,191,255));
}else {
g.setColor(new Color(234,235,0));
}
g.fillOval(cols*Config.span, rows*Config.span, Config.span, Config.span);
}
}
开启一个单独的线程,刷新蛇的绘制
class SnackPanelThread extends Thread {
boolean flag = true;
@Override
public void run() {
while (Config.isLive && flag) {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (Config.isLive && Config.pause) {
repaint();//利用线程 每隔一定的时间 就调用一次画的方法 让蛇移动一次
}
}
//加一个判断 如果是手动关闭的话 就不加提示了
if (flag) {
JOptionPane.showMessageDialog(SnackPanel.this, "游戏结束了");
}
}
public void stopIt() {
flag = false;
}
}
总结
总体来说不难,比较适合Java初学者作为一个练手的项目进行夺实基础。
最后放上资源的链接
有任何问题欢迎私信哈。🐷