刚刚接触java的文本框绘图的知识点,然后就可以按照老师的提醒做一些简单的游戏,对JFrame加深一下,下面就贪吃蛇给出一些源代码,其实正真的实现的代码并不多,只是稍微处理一下就可以明白,下面代码均有注释!

第一个类shake类

import java.awt.Color;

import java.awt.Graphics;

import java.util.Random;

public class Snake {

public int w;//半径

public int x , y;//球心坐标

Color co;//颜色

public int dir = 4;

public Snake(int w,int x , int y ,Color col){

this.w = w;

this.x = x;

this.y = y;

this.co = col;

}

public void draw(Graphics g){

g.setColor(co);//设置填充的颜色

g.fillArc(SnakeGame.OFF_W+x*w, SnakeGame.OFF_H+y*w, w, w,0,360);//设置矩形,4个参数,xy坐标,高跟宽

}

}

第二个类SnakeGame

import java.awt.*;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.util.*;

import javax.swing.JFrame;

public class SnakeGame extends JFrame{

public final static int SCREEN_W = 800,SCREEN_H = 600;//设置屏幕大小

public final static int OFF_W = 200,OFF_H = 100;//设置编辑框距屏幕边缘的宽高

int key;//记录上下左右键的KeyCode

boolean isPress;//判断是否按下按键

Graphics offg;//画笔

Image img;//画布

ArrayList<Snake> Snakes = new ArrayList<Snake>();//储存蛇的容器

private static final SnakeGame g = new SnakeGame();

public static SnakeGame get_Game(){

return g;

}

private SnakeGame(){

setBounds(100,100,SCREEN_W,SCREEN_H);//设置屏幕大小以及起始坐标

setTitle("SnakeGame");//设置标题

setVisible(true);//设置时是否显示

setDefaultCloseOperation(EXIT_ON_CLOSE);//设置小红叉

addKeyListener(new KeyAdapter() {//键盘监听

@Override

public void keyPressed(KeyEvent e) {//按键盘事件

// TODO Auto-generated method stub

isPress = true;

key = e.getKeyCode();

}

@Override

public void keyReleased(KeyEvent e) {//松键盘事件

// TODO Auto-generated method stub

isPress = false;

key = -1;

}

});

}

public int snakew = (SCREEN_W - 2*OFF_W)/40;//设置蛇的一格的大小

Snake food;//食物

Snake head;//蛇头

public Random rd = new Random();

public void paint(Graphics g){

if(img == null){

img = createImage(SCREEN_W,SCREEN_H);

offg = img.getGraphics();

int xx = rd.nextInt((SCREEN_W - 2*OFF_W)/snakew);

int yy = rd.nextInt((SCREEN_W - 2*OFF_W)/snakew);

food = new Snake(snakew, xx, yy, Color.red);//随机产生食物

head = new Snake(snakew, 0, 0, Color.yellow);

Snakes.add(head);//添加蛇头

}

offg.setColor(Color.white);

offg.fillRect(0, 0, SCREEN_W, SCREEN_H);

offg.setColor(Color.black);

offg.fillRect(OFF_W,OFF_H,(SCREEN_W - 2*OFF_W),(SCREEN_H - 2*OFF_H));

//判断按键按下去生效

if(isPress){

Snake head = Snakes.get(0);//获得蛇头

switch(key){//蛇头方向变,上下左右

case 38:

if(head.dir != 2){

head.dir = 1;

}

break;

case 40:

if(head.dir != 1){

head.dir = 2;

}

break;

case 37:

if(head.dir != 4){

head.dir = 3;

}

break;

case 39:

if(head.dir != 3){

head.dir = 4;

}

break;

}

}

Snake head = Snakes.get(0);

//吃到食物后,在随机产生一个食物

if(head.x == food.x && head.y == food.y){

food.x = rd.nextInt((SCREEN_W - 2*OFF_W)/snakew);

food.y = rd.nextInt((SCREEN_W - 2*OFF_W)/snakew);

Snakes.add(new Snake(snakew, head.x, head.y, Color.blue));

}//先蛇身再蛇头

for (int i = Snakes.size()-1; i > 0  ; i--) {

Snakes.get(i).x = Snakes.get(i-1).x;

Snakes.get(i).y = Snakes.get(i-1).y;

}

switch(head.dir){

case 1:

head.y--;

break;

case 2:

head.y++;

break;

case 3:

head.x--;

break;

case 4:

head.x++;

break;

}

if(head.x > 39){

head.x = 0;

}else if(head.x < 0){

head.x = 39;

}

if(head.y > 39){

head.y = 0;

}else if(head.y < 0){

head.y = 39;

}

food.draw(offg);

for (int i = 0; i < Snakes.size(); i++) {

Snakes.get(i).draw(offg);

}

g.drawImage(img,0,0,null);

repaint();//重绘

try {

Thread.sleep(150);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

第三个类测试类MainTest

public class MainTest {
    public static void main(String[] args) {
     SnakeGame g = SnakeGame.get_Game();
    }
}

[Java第一个游戏]JFrame文本框下贪吃蛇的更多相关文章

  1. Java 获取、删除Word文本框中的表格

    本文介绍如何来获取Word文本框中包含的表格,以及删除表格. 程序测试环境包括: IDEA JDK 1.8.0 Spire.Doc.jar 注:jar导入,可通过创建Maven程序项目,并在pom.x ...

  2. Linux平台下贪吃蛇游戏的运行

    1.参考资料说明: 这是一个在Linux系统下实现的简单的贪吃蛇游戏,同学找帮忙,我就直接在Red Hat中调试了一下,参考的是百度文库中"maosuhan"仁兄的文章,结合自己的 ...

  3. Easyui表单,文本框,下拉菜单三级联动练习代码

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. Java 添加、读取、删除Excel文本框

    本文介绍通过Java程序添加文本框到Excel的方法,添加文本框时,可以添加文本.设置文本方向.文本对齐方式.设置文本框大小.位置.填充色/填充图片.文本框旋转角度.文本框名称.可选文本.文本框隐藏或 ...

  5. 用MVC的辅助方法自定义了两个控件:“可编辑的下拉框控件”和“文本框日历控件”

    接触MVC也没多长时间,一开始学的时候绝得MVC结构比较清晰.后来入了门具体操作下来感觉MVC控件怎么这么少还不可以像ASP.net form那样拖拽.这样设计界面来,想我种以前没学过JS,Jquer ...

  6. 关于MFC文本框输入内容的获取 与 设置文本框的内容

    八月要开始做界面了<( ̄︶ ̄)/,然而目前只会用MFC╮(╯▽╰)╭ 好吧,言归正传,设置好文本框后,要获取用户输入的内容,可以用: GetDlgItemText() ; 这个函数有两个参数,第 ...

  7. Java实现贪吃蛇

    游戏界面基本布局 贪吃蛇是基于JFrame的一款小游戏.它主要有两部分组成,一个是显示区域,一个是按钮区域.这两个区域都用JPanel来实现. 首先需要创建一个基于JFrame的类,例如创建一个MyF ...

  8. [置顶] 63行代码完美实现html5 贪吃蛇游戏

    以前也很少关注html5,感觉选择html已经慢慢成为趋势,想了解下.就找了个游戏学习了,写完这个游戏感觉html5和js结合很紧密,如果js不是特别好.估计需要先补习下js,这个只是个人的建议,不一 ...

  9. 用C++实现的贪吃蛇游戏

    我是一个C++初学者,控制台实现了一个贪吃蛇游戏. 代码如下: //"贪吃蛇游戏"V1.0 //李国良于2016年12月29日编写完成 #include <iostream& ...

随机推荐

  1. JAVA课程设计---学生基本信息管理系统(201521123039 王兴)

    1.团队课程设计博客链接 http://www.cnblogs.com/zyjjj/p/7061880.html 2.个人负责模块或任务说明 函数 功能说明 Search 查找学生信息,分为两种查找方 ...

  2. java购物车系统 团队博客

    1. 团队名称.团队成员介绍(需要有照片) 团队名称:一颗LFL 团队成员:廖余俊 计算机工程学院网络工程1512 学号201521123053 方旭 计算机工程学院网络工程1512 学号201521 ...

  3. Linux服务器硬盘状态查看

    首先执行fdisk -l最底下 Device Start End Sectors Size Type /dev/vda1 2048 6143 4096 2M BIOS boot /dev/vda2 6 ...

  4. 警惕Java编译器中那些“蜜糖”陷阱

    一.前言 随着Java编译器不断地向前发展,它为程序员们提供了越来越多的“蜜糖”(compiler suger),极大地方便了程序的开发,例如,foreach的增强模式,自动拆箱与装箱以及字符串的连接 ...

  5. cnblogs第一天

    2017-08-25 21:27:16 今天算是真的下定决心要好好的去经营自己的博客了. flag也就不立了,毕竟,flag这种东西立了就是为了打脸的嘛....... 既然说是经营了,那必然是要认认真 ...

  6. JMeter基础之—录制脚本

    Jmeter 是一个非常流行的性能测试工具,虽然与LoadRunner相比有很多不足,比如:它结果分析能力没有LoadRunner详细:很它的优点也有很多: l       开源,他是一款开源的免费软 ...

  7. 修改yum源

    安装 centos 之后,修改 yum 源到其它国内源 1. 备份原文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Ba ...

  8. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)

    当任何时候觉你得难受了,其实你的大脑是在进化,当任何时候你觉得轻松,其实都在使用以前的坏习惯. 通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车 ...

  9. Linux入门之常用命令(12) mount

    查看Linux所有设备 cd  /dev ls -l sd*  //分区 查看Linux磁盘 fdisk -lu 挂载 一般挂载至/mnt /media mount /dev/sda5   /mnt/ ...

  10. vue学习心得

    前言 使用vue框架有一段时间了,这里总结一下心得,主要为新人提供学习vue一些经验方法和项目中一些解决思路. 文中谨代表个人观点,如有错误,欢迎指正. 环境搭建 假设你已经通读vue官方文档(文档都 ...