贪吃蛇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 ...
随机推荐
- PADS_AD_Cadence转换
PADS_AD_Cadence转换 软件版本:PADS的版本是PADS9.5,Altium designer的版本是Altium designer winter 09 PADS和AD的转换 PADS的 ...
- Android gdb 调试
[1].终端目录设置到: proj.android[2].make文件的编译选项加上: -g -gstabs+[3].执行编译脚本: sh ./build_native.sh NDK_DEBUG=1[ ...
- C++类成员函数的重载、覆盖和隐藏区别?
C++类成员函数的重载.覆盖和隐藏区别? a.成员函数被重载的特征:(1)相同的范围(在同一个类中):(2)函数名字相同:(3)参数不同:(4)virtual 关键字可有可无.b.覆盖是指派生类函数覆 ...
- 【转】XPath 示例
XPath 示例 其他版本 本主题回顾整个 XPath 参考中出现的语法示例. 所有示例均基于 XPath 语法的示例 XML 文件 (inventory.xml). 有关在测试文件中使用 X ...
- BI软件搞不定业务管理报表的需求
BI是商业智能的缩写,是可以帮助企业做出明智的业务经营决策的工具,其数据来源于各个业务系统,如ERP.CRM.SCM.进销存.HER.OA等. BI系统不同于传统的管理信息系统,他号称是一个整体应用的 ...
- [转]在NopCommerce中新增一个Domain Model的步骤
本文转自:http://www.cnblogs.com/aneasystone/archive/2012/08/27/2659183.html 在NopCommerce中新增一个Domain Mode ...
- 再不写,我怕就再也不写了-LAMP基础
hi 经历了4天大餐的洗礼,整个人都思密达了...昨天的懒,是没有原因的懒,总之就是该提笔了亲 1.Ubuntu下的LAMP配置 -----Ubuntu基础知识----- ----管理员权限 出于安全 ...
- z-index学习知识小结
一.z-index七阶层叠顺序表 1.层叠顺序的大小比较: background/border < 负z-index < block块状水平盒子 < float浮动盒子 < i ...
- NOIP2010提高组乌龟棋 -SilverN
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
- 《2016ThoughtWorks技术雷达峰会----变革的原因》
变革的原因 张松 ,ThoughtWorks中国区总经理 首先回顾IT历史,观点如下: 1.在80,90年代,IT作为一个种生产效率的提高工具,主要是把手工的活动自动化.以client se ...