- 浏览: 149058 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lvbolvtian:
楼主最好贴上思路先
给你n个数,其中有且仅有三个数出现了奇数次,其余的数都出现了偶数次。用线性时间常数空间找出出现了奇数次的那三个数(代码)。 -
omooeo:
很好!谢了!
HSSF读取Excel是公式单元格处理 -
独步天下:
Apache Velocity DocBook Framework 转换中文PDF -
ph4nut:
有趣的发现,最近一直等待火炬之光2发布,希望这个版本能补上这个 ...
火炬之光(TorchLight)附魔(Enhance)的设计缺陷 -
andyjojo:
哎证明是O(n)的还真难
Array Puzzle
接上一篇,图像化初步尝试
代码没有优化
代码没有优化
package com.onezero; import java.awt.*; import javax.swing.*; public class CubePaint extends JFrame{ private static double[][] points={}; private MagicCube mc; CubePaint(){ super("魔方游戏"); mc = new MagicCube(CubeNode.getOriginNode()); this.setSize(600,620); final CubeCanvas cc = new CubeCanvas(this); this.add(cc); this.setVisible(true); new Thread(){ public void run(){ try{ do{ mc.rotate(1, 0); cc.repaint(); Thread.sleep(5000); if(mc.equals(MagicCube.ORIGINCUBE))break; mc.rotate(2, 0); cc.repaint(); Thread.sleep(5000); if(mc.equals(MagicCube.ORIGINCUBE))break; mc.rotate(-1, 2); cc.repaint(); Thread.sleep(5000); if(mc.equals(MagicCube.ORIGINCUBE))break; mc.rotate(-2, 2); cc.repaint(); Thread.sleep(5000); if(mc.equals(MagicCube.ORIGINCUBE))break; }while(true); }catch(Exception e){ } } }.start(); } public MagicCube getMc() { return mc; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new CubePaint(); } } class CubeCanvas extends JComponent { static int wall = 20; static int space = 3; private MagicCube mc; private CubePaint cp; private int width, height; private int wspace, hspace; private int len; CubeCanvas(CubePaint cp){ this.cp = cp; this.mc = cp.getMc(); width = cp.getWidth(); height = cp.getHeight()-20; len = (Math.min(width, height) - 2 * wall) / 9; wspace = (width - 9*len)/2; hspace = (height - 9*len)/2; } public void paint(Graphics g) { width = cp.getWidth(); height = cp.getHeight()-20; len = (Math.min(width, height) - 2 * wall) / 9; wspace = (width - 9*len)/2; hspace = (height - 9*len)/2; for(int i=0;i<27;i++){ if(i==13)continue; draw(g,mc.getCubeNode(i)); } } private void draw(Graphics g, CubeNode node){ if(node==null)return; int[] xyz = node.location.xyz; if(xyz[Point3D.Y]==0){ //前面 int[] xPoints = getxPoints(xyz,1); int[] yPoints = getyPoints(xyz,1); g.setColor(getColor(node.nodecolor.getColorId(1))); g.fillPolygon(xPoints, yPoints, 4); g.setColor(Color.BLACK); g.drawPolygon(xPoints, yPoints, 4); } if(xyz[Point3D.X]==2){ //右面 int[] xPoints = getxPoints(xyz,2); int[] yPoints = getyPoints(xyz,2); g.setColor(getColor(node.nodecolor.getColorId(2))); g.fillPolygon(xPoints, yPoints, 4); g.setColor(Color.BLACK); g.drawPolygon(xPoints, yPoints, 4); } if(xyz[Point3D.Z]==2){ //上层 int[] xPoints = getxPoints(xyz,5); int[] yPoints = getyPoints(xyz,5); g.setColor(getColor(node.nodecolor.getColorId(5))); g.fillPolygon(xPoints, yPoints, 4); g.setColor(Color.BLACK); g.drawPolygon(xPoints, yPoints, 4); } } private int[] getxPoints(int[] xyz, int face){ int[] xPoints = new int[4]; switch(face){ case 1: xPoints[0] = wspace + 2*xyz[0]*len; xPoints[1] = xPoints[0]; xPoints[2] = xPoints[1] + 2*len; xPoints[3] = xPoints[2]; xPoints[0] += space; xPoints[1] += space; break; case 2: xPoints[0] = wspace + xyz[1]*len + 6*len; xPoints[1] = xPoints[0]; xPoints[2] = xPoints[1] + len; xPoints[3] = xPoints[2]; xPoints[0] += space; xPoints[1] += space; break; case 5: xPoints[0] = wspace + (2*xyz[0] + xyz[1])*len; xPoints[1] = xPoints[0] + len; xPoints[3] = xPoints[1] + len; xPoints[2] = xPoints[3] + len; xPoints[0] += space; xPoints[1] += space/2; xPoints[2] -= space/2; } return xPoints; } private int[] getyPoints(int[] xyz, int face){ int[] yPoints = new int[4]; switch(face){ case 1: yPoints[0] = hspace + 2*(3 - xyz[2])*len + 3*len; yPoints[1] = yPoints[0] - 2*len; yPoints[2] = yPoints[1]; yPoints[3] = yPoints[0]; yPoints[1] += space; yPoints[2] += space; break; case 2: yPoints[0] = hspace + 2*(3 - xyz[2])*len + (3-xyz[1])*len; yPoints[3] = yPoints[0] - len; yPoints[1] = yPoints[3] - len; yPoints[2] = yPoints[1] - len; yPoints[0] -= space; yPoints[1] += space/2; yPoints[2] += space + space/2; break; case 5: yPoints[0] = hspace + (3 - xyz[1])*len; yPoints[1] = yPoints[0] - len; yPoints[2] = yPoints[1]; yPoints[3] = yPoints[0]; yPoints[1] += space; yPoints[2] += space; } return yPoints; } private Color getColor(int colorId){ switch(colorId){ case 0: return Color.RED; case 1: return Color.BLUE; case 2: return Color.GREEN; case 3: return Color.YELLOW; case 4: return Color.PINK; default: return Color.WHITE; } } }
- CubePaint.rar (1.3 KB)
- 下载次数: 37
发表评论
-
Java 暴力破解扑克骗局
2017-05-13 19:45 696{ "♣3", "♦4" ... -
Debug tips
2016-03-22 22:41 3741 add log in third party code ... -
Java8 sample code 阅读
2014-07-08 17:41 721阅读了jdk1.8.0_05/sample/lambda/Bu ... -
判断一个数字是否是回文
2011-06-09 12:00 1759最近碰到一个题目,其中一步判断数字是否为回文 由于题目要求是最 ... -
PNG转GIF
2010-08-20 11:37 2509PNG转GIF,并保留透明部分 public sta ... -
J2ME M3G 编程
2010-01-13 17:16 1328//顶点集合 VertexArray vertexA ... -
svg标签
2010-01-11 13:50 2593Property Trait Getter [possibl ... -
char类型与Unicode
2010-01-06 18:03 1595char tempchar = '我'; S ... -
J2ME 发送短信
2009-12-29 17:03 1349J2ME使用WMA发送短信时如果附带端口,手机接收不到短信息, ... -
J2ME SDK
2009-12-29 16:47 1340Nokia(诺基亚) Nokia确实比较贴心,有中文网页,有专 ... -
J2ME opensource
2009-12-29 16:46 2041J2ME Polish J2ME Polish是用 ... -
J2ME Connector HTTPConnection 内容格式 chunked
2009-06-11 18:36 2009最近学J2ME,遇到一个问题: 使用Connector.ope ... -
父类构造方法调用
2009-06-11 10:42 40111.所有类如果没有构造 ... -
三角形判断
2009-05-26 16:09 1729某人刚学Java,一道三角形判断题,下面是代码。记录在此,以资 ... -
数字转化为汉字 1243568962=>壹亿肆仟叁佰伍拾陆万捌仟玖佰陆拾贰
2009-05-20 09:20 1352private String numFormat(int fl ... -
MouseInfo
2009-03-30 11:07 1191java.awt 类 MouseInfo java.lang ... -
Java 获取鼠标坐标 MouseInfo类
2009-03-30 11:02 7006Java GUI编程时获取鼠标坐标一般在Component上添 ... -
获取本地 ip (多网卡的情况下)
2009-02-16 17:47 6513public String getLocalHostName( ... -
字符,字节和编码
2009-02-10 17:16 740字符,字节和编码 [原 ... -
魔方Java程序
2009-01-21 10:47 3402近期尝试写个java的魔方程序。提供图像化界面。 数据结果如下 ...
相关推荐
logistic 图像加密 解密 matlab 魔方变换
MagicCubeb魔方 图像识别 颜色识别
基于混沌和魔方的图像加密算法,王林林,王兴元,提出一种基于混沌和魔方的图像加密算法,该算法不仅改变图像像素值而且通过重新排列图像像素点的位置实现图像置乱,在三维空间上
C++实用图像处理(黑魔方)光盘文件1,一共2个文件。这里只是其中一个,可单独使用
C++实用图像处理(黑魔方)光盘文件--学习版Imgcx,
图像预处理:通过使用OpenCV提供的图像处理算法,对输入的魔方图像进行预处理,包括图像去噪、边缘检测、图像分割等操作,以提高后续的识别准确率。 特征提取与模式识别:通过使用OpenCV提供的特征提取算法,对...
基于matlab和图像识别实现的解魔方机器人项目完整源码(完成图像识别_魔方解算_串口发送信息给stm32)+代码注释+数据集+项目说明.zip 上位机程序 MATLAB 写的上位机,完成图像识别,魔方解算,通过串口发送机械运动...
本软件可以转出任意打乱的魔方,利用OpenGL显示三维魔方,其中在软件的开始界面中需要输入魔方的图像信息,首先在右上角的六个方格中输入魔方的六个面的颜色,然后利用鼠标右键点其中的一个颜色,拖动到中间的54个...
用opencv识别魔方图片颜色,完成魔方初始顺序输入,这只是opencv识别一张魔方图片demo
魔方阵魔方阵魔方阵魔方阵魔方阵魔方阵魔方阵魔方阵魔方阵魔方阵魔方阵魔方阵
该软件是一款功能强大的视频播放和简单图形出来的软件,可疑快放、慢放、截取、放大、对比度、饱和度、锐化等功能。支持大部分格式的文件。
魔方教程 二阶魔方入门 三阶新手教程 用最少的公式复原四阶魔方 五阶魔方复原 魔方小软件
C++实用图像处理(黑魔方)光盘文件1,一共2个文件。这里只是其中一个,可单独使用
3d魔方源码 3d魔方源码 3d魔方源码 3d魔方源码
端实现摄像头图像采集和魔方色块 RGB 值的获取; HPS 端完成颜色识别, 运用二阶段算法还原魔 方, 然后将还原步骤编码之后回传给 FPGA,由 FPGA 中的并行舵机控制模块实现对魔方还原机械 结构精准快速的控制,从而...
模拟真实三阶魔方的功能,实现在电脑上玩魔方。
能在空闲时间玩玩魔方,历练一下脑子,是个不错的选择。 学会了3阶魔方,得买一个3阶魔方,学会了4阶魔方,得买一个。。。。 如此下去,可还得了。 主要是可能还不会,那就悲哀了 可以通过鼠标或者按键进行控制...
unity3d打造魔方,unity3d打造魔方,unity3d打造魔方,unity3d打造魔方