贪吃蛇C#和JAVA实现
using System;
using System.Windows.Forms;
using System.Drawing;
class Window : Form
{
Point[] a = ];
;
Random r = new Random();
Point food=new Point();
int dir;
;
;
;
;
,-},{,},{,},{-,}};
, ysize = ;
;
public Window()
{
Text = "贪吃蛇--made by weidiao.neu";
a[].X = ;
a[].Y = ;
dir = ;
size = ;
food.X = ;
food.Y = ;
ClientSize = new Size(xsize * per, ysize * per);
Paint += draw;
KeyDown += keyDown;
Timer t = new Timer();
t.Interval = ;
t.Tick += delegate
{
].X + d[dir,];
].Y + d[dir,];
|| y < || x >= xsize || y >= ysize||dead(x,y))
{
t.Stop();
MessageBox.Show("你死了");
Application.Exit();
}
if (x == food.X && y == food.Y)
{
size++;
while (true)
{
, xsize - );
, ysize - );
int i;
; i < size - ; i++)
{
if (fx == a[i].X && fy == a[i].Y) break;
}
)
{
food.X = fx;
food.Y = fy;
break;
}
}
}
; i > ; i--)
{
a[i] = a[i - ];
}
a[].X = x;
a[].Y = y;
Invalidate();
};
t.Start();
}
bool dead(int x, int y)
{
; i < size; i++)
{
if (a[i].X == x && a[i].Y == y) return true;
}
return false;
}
void keyDown(object o, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up: if (dir == Down) return; else dir = Up; break;
case Keys.Down: if (dir == Up) return; else dir = Down; break;
case Keys.Left: if (dir == Right) return; else dir = Left; break;
case Keys.Right: if (dir == Left) return; else dir = Right; break;
}
}
void draw(object o, PaintEventArgs e)
{
var g = e.Graphics;
g.Clear(Color.Silver);
; i < size; i++)
{
g.FillRectangle(new SolidBrush(Color.SeaGreen), a[i].X*per,per* a[i].Y, per,per);
}
g.FillEllipse(new SolidBrush(Color.Red), food.X*per, food.Y*per, per,per);
}
}
class Program
{
static void Main()
{
Application.Run(new Window());
}
}
demo to yanshuang.
java版
package aaa;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
class Haha extends JFrame {
public static void main(String[] args) {
new Haha();
}
Point[] a = new Point[1000];
int size = 0;
Random r = new Random();
Point food = new Point();
int dir;
final int Up = 0;
final int Right = 1;
final int Left = 3;
final int Down = 2;
final int[][] d = {{0, -1}, {1, 0}, {0, 1}, {-1, 0}};
final int xsize = 50, ysize = 30;
final int per = 20;
BufferedImage bufferedImage = new BufferedImage(per * xsize, per * ysize,
BufferedImage.TYPE_INT_ARGB);
Timer t;
public Haha() {
setTitle("贪吃蛇--made by weidiao.neu");
a[0] = new Point(10, 10);
dir = 1;
size = 1;
food.x = 40;
food.y = 25;
setSize(xsize * per, ysize * per);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
int x = a[0].x + d[dir][0];
int y = a[0].y + d[dir][1];
if (x < 0 || y < 0 || x >= xsize || y >= ysize || dead(x, y)) {
t.cancel();
JOptionPane.showConfirmDialog(Haha.this, "你死了");
}
if (x == food.x && y == food.y) {
size++;
while (true) {
int fx = r.nextInt(xsize);
int fy = r.nextInt(ysize);
int i;
for (i = 0; i < size - 1; i++) {
if (fx == a[i].x && fy == a[i].y)
break;
}
if (i == size - 1) {
food.x = fx;
food.y = fy;
break;
}
}
}
for (int i = size - 1; i > 0; i--) {
a[i] = new Point(a[i - 1]);
}
a[0].x = x;
a[0].y = y;
repaint();
}
}, 0, 400);
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
keyDown(e.getKeyCode());
}
});
}
boolean dead(int x, int y) {
for (int i = 0; i < size; i++) {
if (a[i].x == x && a[i].y == y)
return true;
}
return false;
}
void keyDown(int keyCode) {
switch (keyCode) {
case KeyEvent.VK_UP :
if (dir == Down)
return;
else
dir = Up;
break;
case KeyEvent.VK_DOWN :
if (dir == Up)
return;
else
dir = Down;
break;
case KeyEvent.VK_LEFT :
if (dir == Right)
return;
else
dir = Left;
break;
case KeyEvent.VK_RIGHT :
if (dir == Left)
return;
else
dir = Right;
break;
}
}
@Override
public void paint(Graphics g) {
Graphics2D gg = bufferedImage.createGraphics();
gg.setColor(Color.gray);
gg.fillRect(0, 0, getWidth(), getHeight());
gg.setColor(Color.green);
for (int i = 0; i < size; i++) {
gg.fillRect(a[i].x * per, per * a[i].y, per, per);
}
gg.setColor(Color.red);
gg.fillOval(food.x * per, food.y * per, per, per);
g.drawImage(bufferedImage, 0, 0, null);
}
}
贪吃蛇C#和JAVA实现的更多相关文章
- 贪吃蛇的java代码分析(一)
自我审视 最近自己学习java已经有了一个多月的时间,从一开始对变量常量的概念一无所知,到现在能勉强写几个小程序玩玩,已经有了长足的进步.今天没有去学习,学校里要进行毕业答辩和拍毕业照了,于是请了几天 ...
- 贪吃蛇的java代码分析(二)
代码剖析 贪吃蛇是一款十分经典的小游戏,对初入coding的朋友来说,拿贪吃蛇这样一个案例来练手十分合适,并不高的难度和成功后的成就感都是学习所必须的.下面我将依照我当时的思路,来逐步分析实现的整个过 ...
- 贪吃蛇的java代码分析(三)
代码剖析 在上一篇文章中,我们完成了贪吃蛇部分代码的构造.回头审视我们写的代码与思路,会发现我们遗漏了一个重要的地方,那就是:贪吃蛇的自身移动.想必大家都知道,贪吃蛇自身是会自己移动的,并且会跟随你的 ...
- 以小时候玩的贪吃蛇为例,对于Java图像界面的学习感悟
简介 正文 01.JFrame是啥? 02.JPanel 03. KeyListener 04.Runnable 05.游戏Running 06.游戏初始类编写 07.main 简介: 一直以来用代码 ...
- java贪吃蛇
这个贪吃蛇有很多功能没有实现,比如说穿墙(本来可以实现,但是穿墙后,就会出现坐标混乱,吃不到食物了),还有碰到自己的身体死亡的情况也没有实现,现在我知道如何判断是否碰到身体,但是,我不知道,如何处理碰 ...
- Java小游戏贪吃蛇
package snake; import java.awt.BorderLayout;import java.awt.Canvas;import java.awt.Color;import java ...
- java实现贪吃蛇游戏
最简单的4个java类就可以实现贪吃蛇: main函数: package tcs; public class GreedSnake { public static void main(String[] ...
- 关于用Java写的贪吃蛇游戏的一些感想
学习Java有那么一个月了,兴趣还是挺高的.然而最近老师布置的一个迷宫问题,着实让我头疼了一两个礼拜,以至于身心疲惫,困扰不安.无奈,暂且先放下这个迷宫问题,写个简单点的贪吃蛇程序,以此来提高低落的情 ...
- Java贪吃蛇游戏
package snake.game; import java.awt.CardLayout; import java.awt.Color; import java.awt.Graphics; i ...
随机推荐
- Linux磁盘管理之实现多文件系统及VFS06
待续 Linux如何支持多文件系统 不同磁盘需要不同类型的磁盘驱动程序,驱动向上提供接口,不同驱动提供的接口格式不同,在上层是块设备层,用来屏蔽下边驱动接口的差别,向上统一提供,把所有硬盘当成块设备, ...
- Linux磁盘管理之设备文件详解04
Linux一切接文件,除了普通文件和目录文件,还包括一些其它的特殊文件:块设备文件.字符设备文件.套接字文件.链接文件等.今天这里主要说一下常见的块设备文件和字符设备文件,这2类是最常见的设备文件类. ...
- linux下创建用户
linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...
- URL编码知识摘抄备忘
网页工具 http://www.107000.com/T-UrlEncode/ 参考: 维基百科http://zh.wikipedia.org/zh/%E7%99%BE%E5%88%86%E5%8F% ...
- POJ1270 Following Orders[拓扑排序所有方案 Kahn]
Following Orders Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4885 Accepted: 1973 ...
- 第一天接触Orchard
第一天接触Orchard 为什么要研究Orchard 呢? 楼主是因为要研究下最新的ASP.NET技术, Orchard 用的人多,历史也比较久,算是老牌了 再就是中文资料比较多,Orchard 有中 ...
- 隐写-CTF中图片隐藏文件分离方法总结
0x00 前言 在安全的大趋势下,信息安全越来越来受到国家和企业的重视,所以CTF比赛场次越来越多,而且比赛形式也不断的创新,题目也更加新颖有趣,对选手的综合信息安全能力有一个较好的考验,当然更好的是 ...
- java 接口(上)
1.接口中的方法都是抽象方法.而普通的抽象类里面不一定都是抽象方法.抽象类中必须有抽象方法,同时也可以有非抽象方法.继承抽象父类的子类中,如果依然有抽象方法,那么这个子类也是抽象类.即只要类中有抽象方 ...
- AppStore 上架注意事项及错误修改
1.上架之前首页要配置好发布证书,配置用于发布的配置文件. 2.必须上传3.5英寸和4英寸图片,这两种图片尺寸不能缺. 3.提交的版本必须是在8.0及以上的版本. 4.必须用发布证书,如果提示UUID ...
- IOS
网上课程:http://www.zhijieketang.com/ edu.51cto.com 码云:http://git.oschina.net/名字 Gesture:https://www.osc ...