贪吃蛇 java代码

Python015

贪吃蛇 java代码,第1张

自己写着玩的,很简单,你试一试哦...

主要用了javax.swing.Timer这个类:

import java.awt.*

import javax.swing.*

@SuppressWarnings("serial")

public class MainClass extends JFrame {

ControlSnake control

Toolkit kit

Dimension dimen

public static void main(String[] args) {

new MainClass("my snake")

}

public MainClass(String s) {

super(s)

control = new ControlSnake()

control.setFocusable(true)

kit = Toolkit.getDefaultToolkit()

dimen = kit.getScreenSize()

add(control)

setLayout(new BorderLayout())

setLocation(dimen.width / 3, dimen.height / 3)// dimen.width/3,dimen.height/3

setSize(FWIDTH, FHEIGHT)

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

setResizable(false)

setVisible(true)

}

public static final int FWIDTH = 315

public static final int FHEIGHT = 380

}

import java.util.*

import java.awt.*

import java.awt.event.*

import javax.swing.*

import javax.swing.Timer

import java.util.Random

@SuppressWarnings("serial")

public class ControlSnake extends JPanel implements ActionListener {

Random rand

ArrayList<Point>list, listBody

String str, str1

static boolean key

int x, y, dx, dy, fx, fy, flag

int snakeBody

int speed

public ControlSnake() {

snakeBody = 1

str = "上下左右方向键控制 P键暂停..."

str1 = "现在的长度为:" + snakeBody

key = true

flag = 1

speed = 700

rand = new Random()

list = new ArrayList<Point>()

listBody = new ArrayList<Point>()

x = 5

y = 5

list.add(new Point(x, y))

listBody.add(list.get(0))

dx = 10

dy = 0

fx = rand.nextInt(30) * 10 + 5// 2

fy = rand.nextInt(30) * 10 + 5// 2

setBackground(Color.WHITE)

setSize(new Dimension(318, 380))

final Timer time = new Timer(speed, this)

time.start()

addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == 37) {

dx = -10

dy = 0

} else if (e.getKeyCode() == 38) {

dx = 0

dy = -10

} else if (e.getKeyCode() == 39) {

dx = 10

dy = 0

} else if (e.getKeyCode() == 40) {

dx = 0

dy = 10

} else if (e.getKeyCode() == 80) {

if (flag % 2 == 1) {

time.stop()

}

if (flag % 2 == 0) {

time.start()

}

flag++

}

}

})

}

public void paint(Graphics g) {

g.setColor(Color.WHITE)

g.fillRect(0, 0, 400, 400)

g.setColor(Color.DARK_GRAY)

g.drawLine(3, 3, 305, 3)

g.drawLine(3, 3, 3, 305)

g.drawLine(305, 3, 305, 305)

g.drawLine(3, 305, 305, 305)

g.setColor(Color.PINK)

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

g.fillRect(listBody.get(i).x, listBody.get(i).y, 9, 9)

}

g.fillRect(x, y, 9, 9)

g.setColor(Color.ORANGE)

g.fillRect(fx, fy, 9, 9)

g.setColor(Color.DARK_GRAY)

str1 = "现在的长度为:" + snakeBody

g.drawString(str, 10, 320)

g.drawString(str1, 10, 335)

}

public void actionPerformed(ActionEvent e) {

x += dx

y += dy

if (makeOut() == false) {

JOptionPane.showMessageDialog(null, "重新开始......")

speed = 700

snakeBody = 1

x = 5

y = 5

list.clear()

list.add(new Point(x, y))

listBody.clear()

listBody.add(list.get(0))

dx = 10

dy = 0

}

addPoint(x, y)

if (x == fx &&y == fy) {

speed = (int) (speed * 0.8)//速度增加参数

if (speed <200) {

speed = 100

}

fx = rand.nextInt(30) * 10 + 5// 2

fy = rand.nextInt(30) * 10 + 5// 2

snakeBody++// 2

} // 2

repaint()

}

public void addPoint(int xx, int yy) {

// 动态的记录最新发生的50步以内的移动过的坐标

// 并画出最新的snakeBody

if (list.size() <100) {//蛇身长度最长为100

list.add(new Point(xx, yy))

} else {

list.remove(0)

list.add(new Point(xx, yy))

}

if (snakeBody == 1) {

listBody.remove(0)

listBody.add(0, list.get(list.size() - 1))

} else {

listBody.clear()

if (list.size() <snakeBody) {

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

listBody.add(list.get(i))

}

} else {

for (int i = list.size() - 1listBody.size() <snakeBodyi--) {

listBody.add(list.get(i))

}

}

}

}

public boolean makeOut() {

if ((x <3 || y <3) || (x >305 || y >305)) {

return false

}

for (int i = 0i <listBody.size() - 1i++) {

for (int j = i + 1j <listBody.size()j++) {

if (listBody.get(i).equals(listBody.get(j))) {

return false

}

}

}

return true

}

}

① 求Java课程设计—小游戏(含源代码)

//hi./srxboys/item/8ce4743da1adc991c2cf29c4

Tank——坦克大战(简洁版)源代码-------(此文档是自己在韩顺平教程总结而来)

*功能:1.防止敌人的坦克重叠运动

*(决定把判断是否碰撞的函数写到EnemyTank类)

*2.可以分关

*2.1(做一个开始的Panel,它是一个空的)

*2.2开始字体闪烁

*3.可以在玩游戏的时候,暂停和继续

*3.1当用户点击暂停时,子弹的速度和坦克速度设为0,并让坦克的方向

*不要发生变化。

*4.可以记录玩家的成绩

*4.1用文件流的方式(小游戏)[大游戏是用的数据库<cs,bs>结构,三国]

*4.2单写一个记录类,完成对玩家的记录

*4.3先完成保存共击毁了多少辆敌人坦克的功能

*4.4存盘退出游戏,可以记录当时的敌人的坦克坐标,并可以恢复

*5.java如何操作声音文件

*/

② JAVA课程设计,求个能用eclipse实现小游戏或小程序的源代码。感激不尽

你自己来去下自载吧,这里面都有 //oschina/project/java

③ 用JAVA编写一个小游戏

前天写的猜数字游戏,yongi控制猜测次数,有详细解析,用黑窗口可以直接运行,

我试验过了,没问题

import javax.swing.Icon

import javax.swing.JOptionPane

public class CaiShuZi4JOptionPane {

/**

* @param args

*/

public static void main(String[] args) {

Icon icon = null

boolean bl = false

int put = 0

int c = (int) (((Math.random())*100)+1)//获取一个1-100的随机数

System.out.println("你获取的随机数是:"+c)//打印你的随机数字

String str1 = (String) JOptionPane.showInputDialog(null,"请输入你的猜测数字(1-100): ","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入")//第一次输入你的猜测数字

if(str1==null){

JOptionPane.showMessageDialog(null, "你已经取消了本次游戏")//如果你点取消那么本次游戏结束

}else{

bl = num(str1)//判断是输入的是不是数字或者是整数

if(true==bl){ //如果是数字的话进入与随机数比较的程序

System.out.println("你输入的数字是:"+str1)//打印你输入的数字

put = Integer.valueOf(str1)

for(int i = 4i >0i--){ //i是你可以猜测的次数

if(put==c){

JOptionPane.showMessageDialog(null, "恭喜你猜对了,正确答案是:"+c+"。")//如果你猜对了就直接结束循环

break

}else if(put>c){ //如果输大了就让你再次从新输入

str1 = (String) JOptionPane.showInputDialog(null,"你的输入过大。你还有"+i+"次机会,请重新输入: ","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入")

if(str1==null){

JOptionPane.showMessageDialog(null, "你已经取消了本次输入")

break

}else{

bl =num(str1)

if(true==bl){

put = Integer.valueOf(str1)

}else{

JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入")

}

}

}else if(put<c){ //如果你输小了也让你从新输入

str1 = (String) JOptionPane.showInputDialog(null,"你的输入过小。你还有"+i+"次机会,请重新输入: ","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入")

if(str1==null){

JOptionPane.showMessageDialog(null, "你已经取消了本次输入")

break

}else{

bl =num(str1)

if(true==bl){

put = Integer.valueOf(str1)

}else{

JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入")

}

}

}

}

}else if(bl==false){ //这个 是你第一次如果填写的不是数字的话也会结束本次游戏

JOptionPane.showMessageDialog(null, "请您下次按要求填写。本次游戏结束")

}

if(true==bl &&c!=put){ //如果你i次都没猜对,那么就直接告诉你这个数十什么

JOptionPane.showMessageDialog(null, "很遗憾你没能猜对,这个数字是:"+c+".")

}

}

}

public static boolean num(String value){ //一个静态方法,判断你输入的是不是数字

try {

Integer.parseInt(value)

return true

} catch (Exception e) {

return false

}

}

}

④ 用java制作一个小游戏 教学

static Scanner in =new Scanner(System.in)

public static int aaa(){

int c = 0

while(true){

try {

if(c>999&&c<10000){

break

}else{

// System.out.println("请输入4位整数")

c= in.nextInt()

if(c>999&&c<10000){

break

}else{

System.out.println("输入有误,请重新输入4位整数")

}

}

} catch (Exception e) {

System.out.println("请输入整数")

c= in.nextInt()

}

}

//in.close()

return c

}

public static void cai(){

//Scanner sa =new Scanner(System.in)

int haoma=(int)(Math.random()*10000)

if(haoma<999)

{

haoma = Integer.parseInt(String.valueOf(haoma)+"0")

}

System.out.println(haoma)

System.out.println("请输入一位4位整数")

int aa = 0

while(true){

aa= aaa()

String pd=String.valueOf(aa)

if(pd.length()!=4){

aa = aaa()

}else{

break

}

}

while(true){

if(aa==haoma){

System.out.println("你猜对了,可以去买彩票了")

}else{

System.out.println("抱歉 , 你猜错了")

}

System.out.println("是否继续1继续 其他结束")

try {

int ss = in.nextInt()

if(ss==1){

cai()

}else{

break

}

} catch (Exception e) {

in.close()

break

}

}

}

public static void main(String[] args) {

System.out.println("欢迎来到猜号小游戏")

cai()

System.out.println("over")

}

⑤ 想做一个java小游戏 谁能给几个创意啊 注意 是创意!!!!! 不是已有的有创意的小游戏

比如有东西扔过来,选择吃掉或者躲开,考反应吧。

⑥ 急求java课程设计,内容可以是小游戏的,如(迷宫,计算器,停车场之恋的),要能运行,谢谢

俄罗斯方块,贪吃蛇。推箱子。

⑦ 求JAVA期末课程设计,要那种开发的小项目软件。可以是像记事本那种,也可以是小游戏那种。

网上搜不到的一般是不可共享的资源,建议去图书馆找本专门针对课程设计的书,里面的资料很丰富,你可以照着做一下,并作功能上适当的增减,这样网上就很难找到了