标签:小代码
/************************** 一早增加了昨晚的想法,data函数一定要实现产生的点数够多 rand值与check判断处的值想想不一样,rand>check里的rand 而相等才是符合逻辑的 下一版本就是增加2链表以添加斜线与增大间距实现加载图片 http://www.592xyx.com/gameplay/14193/index.shtml 关灯游戏3 没想到会于这游戏再结缘 会的东西,不应该只是说说而已…… 纸上谈兵过后的具体实现 理论为心 技术为要 第一阶段产生地图的思考 类似而已 还是有区别的 本程序练习图像化 地图是要加载图片 更方便操作 特别地可以用到;;;链表 连线本身是一个问题 以下为import可化简 本处可按逻辑实现基本功能运行 **************************/ import java.awt.Frame; import java.awt.Point; import java.awt.image.BufferedImage; import java.io.File; import java.lang.reflect.Field; import java.util.List; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.util.ArrayList; import java.util.Date; import java.util.Stack; import java.util.Timer; import java.util.TimerTask; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JPanel; import javax.swing.JTextArea; import java.awt.Graphics; import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import javax.swing.JFrame; import javax.swing.JPanel; public class Main extends JPanel { static Stack<Integer> stack = new Stack(); // 创建堆栈对象 static int a = 1; static int rand = 1; static Point p = null; static Point p2 = null; static int count=0; public static Frame frame = new Frame(); static int s[][] = new int [10][10]; static int ss[][] = new int [10][10]; public static void data() { java.util.Random random=new java.util.Random();// 定义随机类 int sr=random.nextInt(120); int o=2;int p=2; //随机产生rand个连续的点在地图上 while(sr-->0) { int r=random.nextInt(20)%4; if(0<o&&o<9&&0<p&&p<9) {s[o][p]=1;ss[o][p]=1; ///stack.push(o); stack.push(p);rand++; rand++; } if(r==0) o--; if(r==1) p++; if(r==2) o++; if(r==3) p--; } if(rand<20) clear(); } public static void clear() { for(int i=0;i<10;i++) {for(int j=0;j<10;j++) s[i][j]=ss[i][j]=0; } rand=0; data(); } public static int check() { for(int i=0;i<10;i++) {for(int j=0;j<10;j++) if(ss[i][j]==1&&ss[i][j]==0)count++; } if(count==rand)return 1; return 0; } public static void main(String[] args) { data(); //int x=stack.peek(); //int y=stack.pop(); //while(rand-->0) // System.out.println("元素"+rand+"出栈"); // System.out.println("元素"+stack.pop()+"出栈"); // for(int i=0;i<10;i++) // {for(int j=0;j<10;j++) System.out.print(" "+s[i][j]); // System.out.println(" "); // } // for(int i=0;i<10;i++) // {for(int j=0;j<10;j++) System.out.print(" "+ss[i][j]); // System.out.println(" "); // } System.out.println(" "+rand); Main f = new Main(); frame.setTitle("【点灯游戏】"); frame.add(f); frame.setSize(500, 500); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); //frame. f.Action(); frame.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int x = e.getX(); int y = e.getY(); count++; p = new Point(x, y); int i=(x-35)/20; int j=(y-55)/20; //先判断在ss数组中的信息 是1才进行 if(ss[j][i]==1) { s[j][i]=1-s[j][i]; if(ss[j-1][i]==1)s[j-1][i]=1-s[j-1][i]; if(ss[j+1][i]==1)s[j+1][i]=1-s[j+1][i]; if(ss[j][i-1]==1)s[j][i-1]=1-s[j][i-1]; if(ss[j][i+1]==1)s[j][i+1]=1-s[j][i+1]; } //再改变s中的状态 if(check()==1) p2 = new Point(330, 220); else p2 = new Point(330, 2200); frame.repaint(); } }); frame.setVisible(true); } private Timer timer; private void Action() { // ListenerClick(); timer = new Timer(); timer.schedule(new TimerTask() { public void run() { frame.repaint(); } }, new Date(), 1000); } @Override public void paint(Graphics g) { g.drawLine(30,30,30,300); // 左边 g.drawLine(30,30,300,30); // 上边 g.drawLine(300,30,300,300);// 右边 g.drawLine(30,300,300,300);// 下边 g.drawString("【点灯游戏3】",333,33); g.drawString("点正方形区域,相连区域变化",333,50); int i=0,j=0; for( i=0;i<10;i++) { for( j=0;j<10;j++) if(s[i][j]==1)g.drawString("+",40+j*20,40+i*20); } // for( i=1;i<9;i++) // { // for( j=1;j<9;j++) // if(ss[i][j]==1&&ss[i][j+1]==1) g.drawLine(40+j*20,40+i*20,40+(j+1)*20,40+i*20); //右 // // if(ss[i][j]==1&&ss[i][j-1]==1) g.drawLine(40+j*20,40+i*20,40+(j-1)*20,40+i*20); //左 // if(ss[i][j]==1&&ss[i-1][j]==1) g.drawLine(40+j*20,40+i*20,40+j*20,40+(i-1)*20); //上 // //if(ss[i][j]==1&&ss[i+1][j]==1) g.drawLine(40+j*20,40+i*20,40+j*20,40+(i+1)*20); //下 // } for( i=1;i<9;i++) { for( j=1;j<9;j++) if(ss[i][j]==1&&ss[i][j+1]==1) g.drawLine(40+j*20,40+i*20,40+(j+1)*20,40+i*20); //右 if(ss[i][j]==1&&ss[i][j-1]==1) g.drawLine(40+j*20,40+i*20,40+(j-1)*20,40+i*20); //左 } for( i=1;i<9;i++) { for( j=1;j<9;j++) if(ss[i][j]==1&&ss[i-1][j]==1) g.drawLine(40+j*20,40+i*20,40+j*20,40+(i-1)*20); //上 if(ss[i][j]==1&&ss[i+1][j]==1) g.drawLine(40+j*20,40+i*20,40+j*20,40+(i+1)*20); //下 } File file = new File("1.jpg"); if (p != null) { if(30<p.getX()&&p.getX()<300&&30<p.getY()&&p.getY()<300) { g.drawString("YOU had win",(int)p2.getX(), (int)p2.getY()); int ii=(int)(p.getX()-35)/20;int jj=(int)(p.getY()-35)/20; // try{ // BufferedImage src = javax.imageio.ImageIO.read(file); // g.drawImage(src,(int)p.getX(),(int)p.getY(),10,10,null); // } // catch(Exception e){ // e.printStackTrace(); // }finally{ // ; // } g.drawString("X = "+ii,333,70); g.drawString("Y = "+jj,333,90); g.drawString("Y = "+ss[jj][ii],333,110); } else { g.drawString("【error】",44,344); g.drawString("X = "+p.getX(),44,360); g.drawString("ss[][] = "+p.getY(),44,390); } } g.drawString("我会一直打印时间 "+a+"s", 100, 400); a++; } }
标签:小代码
原文地址:http://wzsts.blog.51cto.com/10251779/1828255