标签:小代码
/************************** http://www.592xyx.com/gameplay/14193/index.shtml 关灯游戏3 没想到会于这游戏再结缘 会的东西,不应该只是说说而已…… 纸上谈兵过后的具体实现 理论为心 技术为要 第一阶段产生地图的思考 类似而已 还是有区别的 本程序练习图像化 地图是要加载图片 更方便操作 特别地可以用到;;;链表 连线本身是一个问题 **************************/ 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)return 0; } return 1; } 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(700, 700); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); //frame. MenuBar bar = new MenuBar(); Menu CD = new Menu("【菜单】"); MenuItem m = new MenuItem("【介绍】"); MenuItem n = new MenuItem ("【版本】"); bar.add(CD); CD.add(m); CD.add(n); 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)/40; int j=(y-55)/40; //先判断在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(400, 220); else p2 = new Point(400, 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,400); // 左边 g.drawLine(30,30,400,30); // 上边 g.drawLine(400,30,400,400);// 右边 g.drawLine(30,400,400,400);// 下边 g.drawString("【点灯游戏3】",444,33); g.drawString("点正方形区域,相连区域变化",444,50); int i=0,j=0; BufferedImage b_c; //类里面 不能static try { b_c = ImageIO.read(Main.class.getResource("1.jpg")); } catch (Exception e) { throw new RuntimeException("图片加载异常"); } for( i=0;i<10;i++) { for( j=0;j<10;j++) if(s[i][j]==1) g.drawImage(b_c,40+j*40-10,40+i*40-10,null); // g.drawString("+",40+j*40,40+i*40); } // 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*40,40+i*40,40+(j+1)*40,40+i*40); //右 if(ss[i][j]==1&&ss[i][j-1]==1) g.drawLine(40+j*40,40+i*40,40+(j-1)*40,40+i*40); //左 } 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*40,40+i*40,40+j*40,40+(i-1)*40); //上 if(ss[i][j]==1&&ss[i+1][j]==1) g.drawLine(40+j*40,40+i*40,40+j*40,40+(i+1)*40); //下 } File file = new File("1.jpg"); if (p != null) { if(30<p.getX()&&p.getX()<400&&30<p.getY()&&p.getY()<400) { g.drawString("YOU had win",(int)p2.getX(), (int)p2.getY()); int ii=(int)(p.getX()-35)/40;int jj=(int)(p.getY()-35)/40; // 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,444,70); g.drawString("Y = "+jj,444,90); g.drawString("ss"+ss[jj][ii],444,110); } else { g.drawString("【error】",44,444); g.drawString("X = "+p.getX(),44,460); g.drawString("ss[][] = "+p.getY(),44,490); } } g.drawString("我会一直打印时间 "+a+"s", 100, 440); a++; } }
标签:小代码
原文地址:http://wzsts.blog.51cto.com/10251779/1828611