首页 > 作文

java贪吃蛇代码(最全的java游戏网站)

更新时间:2023-04-05 03:50:04 阅读: 评论:0

年末啦,www.887551.com首先祝各位程序员新年快乐!真的是应了那句话:过了12岁之后,那岁数可就是不按规律的蹭蹭的往上涨啊,就在今年2018年,最后一批90后也步入了18岁的成人礼。正式宣布90后退出青年市场,00后统治世界~我们也即将是老去的一代。

www.887551.com偶然想到童年玩过的那些经典游戏,在当下吃鸡,撸啊撸风靡的时代,那些小游戏渐渐被人遗忘,现在回想起来,当时那些游戏还是很好玩的呢,各位看官觉得呢?所以www.887551.com自己动手写出了贪吃蛇游戏的java代码,又重温了一下,仿佛又回到了童年时代。下面给大家介绍一下代码的逻辑和具体的代码是什么:

1.逻辑判断

要点分析:

1)数据结构:matrix[][]用来存储地图上面的信息,如果什么也没有设置为fal,

如果有食物或蛇,设置为true;nodearray,一个linkedlist,用来保存蛇的每

一节;food用来保存食物的位置;而node类是保存每个位置的信息。

2)重要函数:

changedirection(int newdirection) ,用来改变蛇前进的方向,而且只是

保存头部的前进方向,因为其他的前进方向已经用位置来指明了。 其中newdirection

必须和原来的direction不是相反方向,所以相反方向的值用了同样的奇偶性。在测试

的时候使用了direction%2!=newdirection%2 进行判断。

moveon(),用来更新蛇的位置,对于当前方向,把头部位置进行相应改变。如果越界,

结束;否则,检测是否遇到食物(加头部)或身体(结束);如果什么都没有,加上头部,

去掉尾部。由于用了linkedlist数据结构,省去了相当多的麻烦。

2.具体代码

public class snakepanel extends jpanel implements keylistener,actionlistener {

imageicon up = new imageicon(“up.png”);

imageicon down = new imageicon(“down.png”);

imageicon right = new imageicon(“right.png”);

imageicon le程序员需要什么学历ft = new imageicon(“left.png”);

imageicon title = new imageicon(“title.jpg”);

imageicon food = new imageicon(“food.png”);

imageicon body = new imageicoqq等级排行榜n(“body.png”);

/*

* 定义数组记录蛇头和蛇身体的坐标,变量len表示蛇的长度

* 变量方向表示蛇移动的方向

*/

int[] snakex = new int[750];

int[] snakey = new int[750];

random rand = new random();

int foodx = rand.nextint(34)*25+25;

int foody = rand.nextint(24)*25+75;

int len = 3;

int score = 0;

string fangxiang = “r”;//r右、l左、u上、d下

boolean isstarted = fal;//判断游戏是否开始

boolean isfailed = fal;//判断是否死亡

//计时器:1.时间 2.时间到了去找的对象

timer timer = new timer(300, this);

public snakepanel(){

this.tfocusable(true);//取得焦点

this.addkeylistener(this);

tup();

timer.start();

}

/*

* graphics图像

* public void paint(graphics g) 以绘制组件。

* 应用程序不应直接调用 paint,而是应该使用 repaint 方法来安排重绘组件。

* 参数:g (相当于画笔)- 在其中进行绘制的 graphics 上下文

*/

public void paint(初中毕业想上技校graphics g){

// super.paint(g);

// this.tbackground(color.white);

this.getrootpane().tbackground(color.white);

/*

* public void painticon(component c,graphics g,int x,int y)

* 绘制图标。

* 图标的左上角在图形上下文 g 的坐标空间中的点 (x, y) 处绘制。

* 如果此图标没有图像观察者,则此方法使用 c 组件作为观察者。

* 参数:c(画布) – 用作观察者的组件,如果此图标没有图像观察者

g (画笔)- 图形上下文

x – 图标左上角的 x 坐标

y – 图标左上角的 y 坐标

*/

title.painticon(this, g, 25, 11);

/*

* void java.awt.graphics.fillrect(int x, int y, int width, int height)

* 填充指定的矩形。

* 该矩形左边和右边位于 x 和 x + width – 1。

* 顶边和底边位于 y 和 y + height – 1。

* 得到的矩形覆盖的区域宽度为 width 像素,高度为 height 像素。

* 使用图形上下文的当前颜色填充该矩形。

* 参数:x – 要填充矩形的 x 坐标。

y – 要填充矩形的 y 坐标。

width – 要填充矩形的宽度。

height – 要填充矩形的高度。

*/

g.fillrect(25, 75, 850, 600);

//画蛇头,先判断蛇头的方向

if(fangxiang.equals(“r”)){

right.painticon(this, g, snakex[0], snakey[0]);

}el if(fangxiang.equals(“l”)){

left.painticon(this, g, snakex[0], snakey[0]);

}el if(fangxiang.equals(“u”)){

up.painticon(this, g, snakex[0], snakey[0]);

}el if(fangxiang.equals(“d”)){

down.painticon(this, g, snakex[0], snakey[0]);

}

//画蛇的身体

for (int i = 1; i < len; i++) {

body.painticon(this, g, snakex[i], snakey[i]);

}

//游戏没有开始时,显示提示语(!isstarted)

if(isstarted == fal){

g.tcolor(color.white);

g.tfont(new font(“微软雅黑”,font.bold,35));

g.drawstring(“press space to start/pau”, 250, 350);

}

if(isfailed){

g.tcolor(color.white);

g.tfont(new font(“微软雅黑”,font.bold,35));

g.drawstring(“game over! press space to restart”, 200, 350);

}

food.painticon(this, g, foodx, foody);

//添加分数

g.tcolor(color.white);

g.drawstring(“score : “+score, 600, 45);

}

public void tup(){

isstarted = fal;

isfailed = fal;

len = 3;

snakex[0] = 100;

snakey[0] = 100;

snakex[1] = 75;

snakey[1] = 100;

snakex[2] = 50;

snakey[2] = 100;

}

@override

public void keypresd(keyevent e) {

// todo auto-generated method stub

int keycode = e.getkeycode();

//实现转向,不能实现反转

if(keycode == keyevent.vk_space){

if (isfailed) {

// isstarted = fal;

// isfailed = fal;

tup();

}el {

// isstarted = true;

isstarted = !isstarted;//改变当前状态

// repaint();

}

}el if(keycode == keyevent.vk_up && fangxiang != “d”){

fangxiang = “u”;

}el if(keycode == keyevent.vk_down && fangxiang != “u”){

fangxiang = “d”;

}el if(keycode == keyevent.vk_right && fangxiang != “l”){

fangxiang = “r”;

}el if(keycode == keyevent.vk_left && fangxiang != “r”){

fangxiang = “l”;

}

}

@override

public void actionperformed(actionevent e) {

// todo auto-generated method stub

//1.再定义个闹钟

timer.start();

//2.移动数据

if (isstarted && !isfailed) {

//移动身体

for (int i = len; i >0; i–) {

snakex[i] = snakex[i-1];

snakey[i] = snakey[i-1];

}

//移动头

if(fangxiang.equals(“r”)){

snakex[0] = snakex[0] + 25;

if(snakex[0] > 850)

snakex[0] = 25;

}el if(fangxiang.equals(“l”)){

snakex[0] = snakex[0] – 25;

if(snakex[0] < 25) snakex[0] = 850;

物业客服培训}el if(fangxiang.equals(“u”)){

snakey[0] = snakey[0] – 25;

if(snakey[0] < 75) snakey[0] = 650;

}el if(fangxiang.equals(“d”)){

snakey[0] = snakey[0] + 25;

if(snakey[0] > 650) snakey[0] = 75;

}

}

//吃食物

if(snakex[0] == foodx && snakey[0] == foody){

len ++;

score ++;

foodx = rand.nextint(34)*25+25;

foody = rand.nextint(24)*25+75;

}

//判断身体相碰,游戏结束

for (int i = 1; i < len; i++) {

if (snakex[0] == snakex[i] && snakey[0] == snakey[i]) {

isfailed = true;

}

}

//3.repaint()

repaint();

}

@override

public void keyrelead(keyevent e) {

// todo auto-generated method stub

}

@override

public void keytyped(keyevent e) {

// todo auto-generated method stub

}

}

package 贪吃蛇;

import java.applet.applet;

import java.io.file;

import java.net.malformedurlexception;

import javax.swing.jframe;

public class snake {

public static void main(string[] args) {

// todo auto-generated method stub

jframe frame = new jframe();

frame.tbounds(10, 10, 900, 72对潇潇暮雨0);

frame.tresizable(fal);

frame.tdefaultclooperation(jframe.exit_on_clo);

snakepanel panel = new snakepanel();

frame.add(panel);

frame.tvisible(true);

}

}

代码量有点大,小伙伴们可以复制到eclip中运行就可以了。

在最后呢,祝各位小伙伴永远18岁,新年快乐~谢谢观看~

本文发布于:2023-04-05 03:50:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/bc02e4459700eaf7a9d6a54d67c73500.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java贪吃蛇代码(最全的java游戏网站).doc

本文 PDF 下载地址:java贪吃蛇代码(最全的java游戏网站).pdf

下一篇:返回列表
标签:矩形   坐标   观察者   图标
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图