- 浏览: 135304 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
datawarehouse:
datawarehouse 写道ngix 淘宝是基于这个开发了 ...
解密淘宝网的开源架构 -
datawarehouse:
ngix 淘宝是基于这个开发了一个自己的webserver吧。 ...
解密淘宝网的开源架构 -
eyelock:
我运行报错,,楼主能解答一下G,对swing不熟。
raphi ...
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧 -
lostsky_11:
楼主写出例子了么?物理碰撞部分可能跟你说的差不多渲染部分可以搜 ...
Where is my water 游戏算法 -
xouou_53320:
都是牛人
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧
每年过年都没事,都得写点小东西,今年是是男人就撑过20秒(20秒还是21秒来着,忘了) 可能有点小bug,再完善了.希望大家能支持,支持的就顶一下了
如果努努力也是可以压缩在100行以内的,90行的俄罗斯方块,100行的男人20秒
剩余问题
1.标题
2.开始没有splash
3.不能暂停
4.不能重新开始
5.速度慢
6.左右键有点冲突
7.结束统计
8.新的bomb出现时向飞机当前位置附近发射,现在是向中心附近发射
图片资源见附件.. 横向滚动飞机时,有个中间状态,半侧身,截图是在是不好截,暂时就一步到位,转过去了.. @_@
如果努努力也是可以压缩在100行以内的,90行的俄罗斯方块,100行的男人20秒
剩余问题
1.标题
2.开始没有splash
3.不能暂停
4.不能重新开始
5.速度慢
6.左右键有点冲突
7.结束统计
8.新的bomb出现时向飞机当前位置附近发射,现在是向中心附近发射
import java.awt.Color; import java.awt.Graphics; import java.awt.Image; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.image.BufferStrategy; import javax.swing.ImageIcon; import javax.swing.JFrame; /** * 转载请注明出处 http://mid.iteye.com 2012-01-24 * * @author http://mid.iteye.com * */ public class Fly21S extends JFrame implements Runnable, KeyListener { private int isPlaying = 0; private int bg[][] = new int[100][4];// x,y,color,speed private int bgMove[] = new int[100]; private Color[] colors = new Color[] { Color.BLUE, Color.CYAN, Color.GREEN, Color.ORANGE, Color.RED, Color.WHITE, Color.PINK, Color.YELLOW }; private int movePlanDir[] = new int[2]; // private long timeOffSet = new Date().getTime(); // private long paintBlank = 1; private Image bomb = new ImageIcon("D:\\Java\\eclipse\\workspace\\21sFly\\src\\bomb.gif").getImage(); private Image over = new ImageIcon("D:\\Java\\eclipse\\workspace\\21sFly\\src\\over.gif").getImage(); private Image[] planImages = new Image[] { new ImageIcon("D:\\Java\\eclipse\\workspace\\21sFly\\src\\plan1.gif").getImage(), new ImageIcon("D:\\Java\\eclipse\\workspace\\21sFly\\src\\plan3.gif").getImage(), new ImageIcon("D:\\Java\\eclipse\\workspace\\21sFly\\src\\plan5.gif").getImage(), new ImageIcon("D:\\Java\\eclipse\\workspace\\21sFly\\src\\crash.gif").getImage() }; private int[] planPos = new int[] { 150, 230 };// Plan's current position private double bombPos[][] = new double[50][4];// bomb's position,x direct, y direct. public Fly21S() { setSize(300, 300); setVisible(true); createBufferStrategy(2); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); addKeyListener(this); this.setResizable(false); // init bg star for (int i = 0; i < bg.length; i++) { bg[i] = new int[] { getRandomLessThen(300), getRandomLessThen(300), getRandomLessThen(7), getRandomLessThen(2) + 1 }; bgMove[i] = 1; } // init bomb // up and down for (int i = 0; i < 25; i++) { int xPos = getRandomLessThen(300); int yPos = (int) (getPositiveOrNegative() == -1 ? -1 * getRandomLessThen(50) : (300 + getRandomLessThen(50))); int xDir = 150 - xPos + (getPositiveOrNegative() * getRandomLessThen(2)); int yDir = 150 - yPos + (getPositiveOrNegative() * getRandomLessThen(2)); bombPos[i] = new double[] { xPos, yPos, xDir, yDir };// } // left right for (int i = 0; i < 25; i++) { int xPos = (int) (getPositiveOrNegative() == -1 ? -1 * getRandomLessThen(50) : (300 + getRandomLessThen(50))); int yPos = getRandomLessThen(300); int xDir = 150 - xPos + (getPositiveOrNegative() * getRandomLessThen(2)); int yDir = 150 - yPos + (getPositiveOrNegative() * getRandomLessThen(2)); bombPos[25 + i] = new double[] { xPos, yPos, xDir, yDir };// } } private int getPositiveOrNegative() { return (Math.round(Math.random()) - 1) == 0 ? 1 : -1; } private int getRandomLessThen(int num) { return (int) Math.round(Math.random() * num); } public void paint(Graphics g) { BufferStrategy bs = this.getBufferStrategy(); if (bs == null) return; Graphics tg = bs.getDrawGraphics(); tg.fillRect(0, 20, 300, 300); // paint bg for (int i = 0; i < bg.length; i++) { tg.setColor(colors[bg[i][2]]); tg.drawLine(bg[i][0], bg[i][1], bg[i][0], bg[i][1]); } // paint bomb for (int i = 0; i < bombPos.length; i++) { tg.drawImage(bomb, (int) bombPos[i][0], (int) bombPos[i][1], null); } if (isPlaying == 0) { if (movePlanDir[0] == -1) tg.drawImage(planImages[0], planPos[0], planPos[1], null); else if (movePlanDir[0] == 1) tg.drawImage(planImages[2], planPos[0], planPos[1], null); else tg.drawImage(planImages[1], planPos[0], planPos[1], null); } else { tg.drawImage(planImages[3], planPos[0], planPos[1], null); tg.drawImage(over, 90, 60, null); // tg.drawChars(new char[] { 'H' }, 0, 1, 150, 150); } this.getBufferStrategy().show(); } public static void main(String[] args) { new Thread(new Fly21S()).start(); } public void run() { while (isPlaying == 0) try { for (int i = 0; i < bg.length; i++) { if (bgMove[i] % bg[i][3] == 0) { bg[i][1] = bg[i][1] + 1; if (bg[i][1] > 300) { bg[i][0] = (int) Math.round(Math.random() * 300); bg[i][1] = 0; bg[i][2] = (int) Math.round(Math.random() * 7); } bgMove[i] = 1; } else { bgMove[i]++; } } // move bomb for (int i = 0; i < bombPos.length; i++) { double speedXY = Math.sqrt(bombPos[i][2] * bombPos[i][2] + bombPos[i][3] * bombPos[i][3]); double xRate = bombPos[i][2] / speedXY; double yRate = bombPos[i][3] / speedXY; bombPos[i][0] = bombPos[i][0] + xRate * 1.3;// x to bombPos[i][1] = bombPos[i][1] + yRate * 1.3;// y to // new bomb if (bombPos[i][1] > 300 || bombPos[i][1] < 0) { int xPos = getRandomLessThen(300); int yPos = (int) (getPositiveOrNegative() == -1 ? -1 * getRandomLessThen(50) : (300 + getRandomLessThen(50))); int xDir = 150 - xPos + (getPositiveOrNegative() * getRandomLessThen(2)); int yDir = 150 - yPos + (getPositiveOrNegative() * getRandomLessThen(2)); bombPos[i] = new double[] { xPos, yPos, xDir, yDir };// } else if (bombPos[i][0] > 300 || bombPos[i][0] < 0) { int xPos = (int) (getPositiveOrNegative() == -1 ? -1 * getRandomLessThen(50) : (300 + getRandomLessThen(50))); int yPos = getRandomLessThen(300); int xDir = 150 - xPos + (getPositiveOrNegative() * getRandomLessThen(2)); int yDir = 150 - yPos + (getPositiveOrNegative() * getRandomLessThen(2)); bombPos[i] = new double[] { xPos, yPos, xDir, yDir };// } // check impact if (bombPos[i][0] > planPos[0] && bombPos[i][0] < planPos[0] + 10 && bombPos[i][1] > planPos[1] && bombPos[i][1] < planPos[1] + 10) { // crash isPlaying = 1; System.out.println("Crash~"); } } planPos[0] = planPos[0] + movePlanDir[0]; planPos[1] = planPos[1] + movePlanDir[1]; repaint(); Thread.sleep(33); } catch (InterruptedException e) { } } public void keyPressed(KeyEvent e) {// 38-上 40-下 37-左 39-右 // movePlanDir left right up down if ((e.getKeyCode() == 65 || e.getKeyCode() == 37)) {// left movePlanDir[0] = -1; } else if ((e.getKeyCode() == 68 || e.getKeyCode() == 39)) {// right movePlanDir[0] = 1; } else if ((e.getKeyCode() == 87 || e.getKeyCode() == 38)) {// up movePlanDir[1] = -1; } else if ((e.getKeyCode() == 83 || e.getKeyCode() == 40)) {// movePlanDir[1] = 1; } repaint(); } public void keyReleased(KeyEvent e) { if ((e.getKeyCode() == 65 || e.getKeyCode() == 37)) {// left movePlanDir[0] = 0; } else if ((e.getKeyCode() == 68 || e.getKeyCode() == 39)) {// right movePlanDir[0] = 0; } else if ((e.getKeyCode() == 87 || e.getKeyCode() == 38)) {// up movePlanDir[1] = 0; } else if ((e.getKeyCode() == 83 || e.getKeyCode() == 40)) {// movePlanDir[1] = 0; } repaint(); } public void keyTyped(KeyEvent e) { } }
图片资源见附件.. 横向滚动飞机时,有个中间状态,半侧身,截图是在是不好截,暂时就一步到位,转过去了.. @_@
发表评论
-
Where is my water 游戏算法
2012-01-23 19:56 2102过年把Where is my water完了一遍,对这个游戏的 ... -
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧
2010-02-16 23:03 11070Bug已经Fix~~ 注释已经补充 import jav ... -
俄罗斯方块:C++中的常用错误原因~~
2008-07-20 20:45 1314很久没有用C++写程序了。。用起来很不顺手! 出了问题不知道怎 ... -
疯狂游戏系列之(一)疯狂俄罗斯策划
2008-07-18 20:38 1489闲来无事,做一个PSP上的俄罗斯方块游戏,大致原则是两个字 疯 ... -
PSP程序开发例子解析(十二)InputSystem
2008-07-14 20:50 1062InputSystem例子掩饰了如何在程序中输入文字 #i ... -
PSP程序开发例子解析(十一)HGEParticles
2008-07-14 20:50 1051HGEParticles这个例子很BT 模仿WindowsMe ... -
PSP程序开发例子解析(十)HGEDistortionMesh
2008-07-14 20:49 1697HGEDistortionMesh例子应用了HGE包中的内容 ... -
PSP程序开发例子解析(九)3DPrimer
2008-07-14 20:48 12353D例子显示一个Cube和一个人物 不断旋转 具体底部底层AP ... -
PSP程序开发例子解析(八)Animator
2008-07-14 20:48 949GameApp.cpp #include <std ... -
PSP程序开发例子解析(七)DisplayingChinese
2008-07-14 20:46 956显示中文 加载点阵文件 没啥说的 就是不清楚点阵文件是哪来的= ... -
PSP程序开发例子解析(六)TrueTypeFont
2008-07-14 20:45 1057按照Windows的ttf字体显示文字。。跑不起来 略 #i ... -
PSP程序开发例子解析(五)Shapes
2008-07-14 20:44 914绘制各种形状 无话可说 #include <st ... -
PSP程序开发例子解析(四)Splines
2008-07-14 20:38 953第四个例子讲述了曲线 ... -
PSP程序开发例子解析(三)ResourceManager
2008-07-14 20:38 960太晚了 明天再写 弄个res文件没找到 换了个工程 copy源 ... -
PSP程序开发例子解析(二)Images
2008-07-14 20:37 1151第二个例子程序演示了 ... -
PSP程序开发例子解析(一)HelloWorld
2008-07-14 20:31 3019今天晚上把PSP的开发环境搭建了起来 并且看了看PSP的Hel ... -
关于BMP图片格式(部分垃圾代码)
2007-11-17 19:05 1343java 代码 做了个刷投票的程序 识别随即码图片的地方 ...
相关推荐
2011年春节的具体日期是公历2月3日,星期四,农历为二零一零年正月初一,这是因为在农历中,新的一年通常始于新月出现后的第一个朔日。 2011年被称为辛卯年,这是基于中国古代的干支纪年系统。干支纪年法是中国传统...
从给定文件的信息来看,这份文档主要是一年级学生关于“过年”的看图写话练习,共包含五篇短文。虽然这些内容与IT技术没有直接关联,但我们可以从中提炼出与教育、写作以及文化传统相关的知识点。以下是针对该文档...
标题中的“ppt有关回家过年的,好,自己做的”表明这是一个关于回家过年的主题的PPT演示文稿,由制作者个人创作完成。这个PPT可能是为了表达对春节这一传统节日的情感,分享回家过年的故事,或者是作为年终总结或者...
【标签】“资料”表明这是一个关于信息或模板的资源,适用于需要写请假申请的员工参考。 文档中列出的【部分内容】包含三篇不同的请假申请书,每篇都有其特定的情境和理由: 1. 第一篇请假申请书强调了申请人对...
1. 教案设计:《第19课 过年啦》是一份小学美术一年级上册的人教版教案,旨在通过教学活动帮助孩子们理解和体验过年的传统习俗和氛围。教案包括了课程目标、重点难点、教具准备、教学过程、课堂作业、作业评价、课程...
而“2024年春节计时器”就是一款专为人们提供精准春节倒计时服务的应用或工具,帮助用户实时了解距离下一个农历新年还有多少天。这个计时器不仅能够满足人们的好奇心,也成为了人们规划假期、准备年货、安排活动的...
总的来说,"2016年过年回家模板"是一个为中国新年量身打造的PPT设计资源,它能够帮助用户轻松创建出具有浓郁节日气息的演示文稿,无论是用于分享家庭故事,还是在企业、学校等场合展现年度成果,都能增添浓厚的节日...
本报告对2022年轻人过年新趋势进行了深入的分析和研究,涵盖了年轻人过年新趋势、年货消费行为、线上渠道选择、年货使用场景等多个方面。 一、年轻人过年新趋势 本报告显示,年轻人过年新趋势的主要特点是提倡...
人教 小学 一年级 美术 上册 过年啦PPT学习教案.pptx
【标题】和【描述】中提到的文档是一个关于一年级学生写的过年作文的集合,文档的标签为"技术",但实际内容与技术关联性不大,主要是描述了过年的庆祝活动和习俗,包括家庭聚餐、春节联欢晚会、放烟花、贴春联、守岁...
标题和描述中提到的"过年为什么要放鞭炮 过年放鞭炮的由来",主要探讨的是中国春节习俗中的一个重要元素——燃放鞭炮。这个传统有着悠久的历史,不仅蕴含着丰富的文化内涵,也是中国传统节日氛围的重要组成部分。 ...
从腊月二十三(或二十四日)小年节起,人们便开始“忙年”:扫房屋、洗头沐浴、准备年节器具等等,所有这些活动,有一个共同的主题,即“辞旧迎新”。 传统民俗:春节更是民众娱乐狂欢的节日。元日以后,各种丰富...
【标题解析】:“大消费行业周观点_:就地过年多方面影响消费,关注业绩确定性支撑.rar”这个标题揭示了本次讨论的核心是关于大消费行业的周度分析,特别是聚焦在春节期间“就地过年”政策对消费的影响以及如何在...
自动抢红包是一款面向广大微信、QQ用户的自动抢红包工具,只需挂在后台运行就可以实现自动进群抢红包,保证过年期间一个红包都不错过,数钱数到手软! 【实用功能】 全自动抢红包 开启自动抢红包功能后,手机将为...
CBNData-2022年轻人过年新趋势洞察报告 本报告主要关注2022年轻人过年新趋势的洞察,通过对年轻人的调查,了解他们在春节期间的消费行为、过年方式、新年货采购习惯等方面的变化趋势。 一、春节的意义 对年轻人来...
这篇文档实际上是一个小学一年级学生写的作文,标题是“过年的一件事”,描述了春节期间作者与家人一起放烟花时发生的意外,并从中汲取了安全的重要性。虽然标签为“范文”,但这篇文章更像是一篇个人经历的叙述,而...
在Android开发中,模仿支付宝过年期间的“咻一咻”效果是一项有趣的挑战,它涉及到多个技术点,包括动画设计、事件处理、用户交互以及自定义视图等。下面将详细介绍如何实现这一效果。 首先,"咻一咻"的核心是动画...
过年网页设计是一个重要的主题,特别是在中国的传统节日春节即将到来之际。网页设计是互联网世界中的关键元素,它不仅决定了网站的外观,还影响用户体验和品牌形象。在这个案例中,我们聚焦于一个以“经典大气红黄色...
《过年啦》这一教学简案主要针对幼小衔接阶段的孩子,旨在通过讲述中国传统节日——春节的故事,帮助孩子们在轻松愉快的氛围中学习语言知识,同时加深对中国传统文化的理解和感受。 教学目标设定清晰,首要任务是让...
【2022年轻人过年新趋势洞察】 2022年的春节,年轻人的过年方式出现了新的变化,他们在年货采办、过年体验和消费选择上展现出独特的趋势。年轻人逐渐成为年货市场的主力军,尤其是95后,他们不仅积极参与年货购买,...