﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-无尽的麦比乌斯-随笔分类-我的作业</title><link>http://www.blogjava.net/Beckya/category/17793.html</link><description>want to be part of your world...</description><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 18:22:20 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 18:22:20 GMT</pubDate><ttl>60</ttl><item><title>我的八皇后</title><link>http://www.blogjava.net/Beckya/archive/2006/11/28/83949.html</link><dc:creator>近似凯珊卓</dc:creator><author>近似凯珊卓</author><pubDate>Mon, 27 Nov 2006 21:05:00 GMT</pubDate><guid>http://www.blogjava.net/Beckya/archive/2006/11/28/83949.html</guid><wfw:comment>http://www.blogjava.net/Beckya/comments/83949.html</wfw:comment><comments>http://www.blogjava.net/Beckya/archive/2006/11/28/83949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Beckya/comments/commentRss/83949.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Beckya/services/trackbacks/83949.html</trackback:ping><description><![CDATA[
		<p>八皇后问题，都知道吧。循环套递归，比汉诺塔还寒，晕归晕，索性弄出来了，撒花~~~<br /><br /><br />public class Das_n_Damen_Problem extends ChessMiniJava{<br />    static int n;<br />    static boolean flag;<br /> static boolean[][] Platzierung;<br /> static boolean[] a;<br /> static boolean[] b;<br /> static boolean[] c;<br /> <br /> public static void main(String[] args){<br />  write("Wie viele Damen?");<br />  n=read();<br />     flag=false;<br />  Platzierung=new boolean[n][n];<br />  a=new boolean[n];<br />  b=new boolean[2*n];<br />  c=new boolean[2*n];<br />  re(0);<br /> }<br /> <br /> public static void re(int i){<br />  if(flag)<br />   return;<br />  for(int iSpalte=0;iSpalte&lt;n;iSpalte++){<br />   if(a[iSpalte]==false &amp;&amp; b[i-iSpalte+n]==false &amp;&amp; c[i+iSpalte]==false){<br />    Platzierung[i][iSpalte]=true;<br />    a[iSpalte]=true;<br />    b[i-iSpalte+n]=true;<br />    c[i+iSpalte]=true;<br />    if(i==n-1){<br />     paintField(Platzierung);<br />     flag=true;<br />     return;<br />    }<br />    else{<br />     re(i+1);<br />    }<br />   Platzierung[i][iSpalte]=false;<br />   a[iSpalte]=false;<br />   b[i-iSpalte+n]=false;<br />   c[i+iSpalte]=false;<br />   }<br />  }<br /> }<br />}<br /><br /><br />附上ChessMiniJava源代码：<br />import java.awt.GridLayout;<br />import javax.swing.JPanel;<br />import javax.swing.JFrame;</p>
		<p>import java.awt.Color;<br />import java.awt.Font;<br />import java.awt.Point;<br />import java.awt.Graphics;<br />import java.awt.Graphics2D;<br />import java.awt.GradientPaint;<br />import java.awt.RenderingHints;</p>
		<p>public class ChessMiniJava extends MiniJava{<br />    private static class Field extends JPanel {<br />        boolean black,queen; Point p;<br />        public Field(boolean black,boolean queen){<br />            this.black=black;<br />            this.queen=queen;<br />            p = getLocation();<br />        }<br /> public void paint(Graphics g) {<br />  super.paint(g);<br />  if (black) g.setColor(Color.BLACK);<br />                else g.setColor(Color.WHITE);<br />                g.fillRect(p.getLocation().x,p.getLocation().y,getWidth()*2,getHeight());<br />                g.setColor(Color.RED);</p>
		<p>                GradientPaint gradient = new GradientPaint(0, 0, Color.YELLOW, getWidth(), 0, Color.RED);<br />                ((Graphics2D)g).setPaint(gradient);<br />                ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,<br />                        RenderingHints.VALUE_ANTIALIAS_ON);<br />                if (queen) {<br />                    g.fillOval((int)(getWidth()*.1),(int)(getHeight()*.7),(int)(getWidth()*.8),(int)(getHeight()*.2));<br />                    int[] x = {(int)(getWidth()*.1), (int)(getWidth()*.9), (int)(getWidth()*.9), (int)(getWidth()*.7), (int)(getWidth()*.5), (int)(getWidth()*.3), (int)(getWidth()*.1)};<br />                    int[] y = {(int)(getHeight()*.8),(int)(getHeight()*.8),(int)(getHeight()*.2),(int)(getHeight()*.6),(int)(getHeight()*.2),(int)(getHeight()*.6),(int)(getHeight()*.2)};<br />                    g.fillPolygon(x,y,7);<br />                }<br /> }<br />    }<br />    public static void paintField(boolean[][] field){<br />        JFrame myFrame = new JFrame("Spielfeld");<br />        JPanel pan = new JPanel();<br />        java.util.Set&lt;Integer&gt; s1 = new java.util.HashSet&lt;Integer&gt;(),s2=new java.util.HashSet&lt;Integer&gt;(),s3 = new java.util.HashSet&lt;Integer&gt;(),s4=new java.util.HashSet&lt;Integer&gt;();<br />        pan.setLayout(new GridLayout(field.length,field.length));<br />        for (int x = 0 ; x &lt; field.length; x ++){<br />            for (int y = 0; y &lt; field[x].length; y++){<br />                pan.add(new Field((x+y)%2 ==1,field[x][y]));<br />                if (field[x][y]) { s1.add(x);s2.add(y);s3.add(x+y);s4.add(field.length-1-y+x);};<br />            }<br />        }<br />        boolean sol=(s1.size()==field.length)&amp;&amp;(field.length==s2.size())&amp;&amp;(field.length==s3.size())&amp;&amp;(field.length==s4.size());<br />        if (System.getProperty("SOL","nowshow").equals("show")){<br />            if (sol) pan.setBorder(javax.swing.BorderFactory.createLineBorder(Color.GREEN,5));<br />            else pan.setBorder(javax.swing.BorderFactory.createLineBorder(Color.RED,5));<br />        }<br />        myFrame.add(pan);<br />        myFrame.setSize(400,400);<br />        myFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);<br />        myFrame.setVisible(true);<br />    }<br />}<br /></p>
<img src ="http://www.blogjava.net/Beckya/aggbug/83949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Beckya/" target="_blank">近似凯珊卓</a> 2006-11-28 05:05 <a href="http://www.blogjava.net/Beckya/archive/2006/11/28/83949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生存游戏</title><link>http://www.blogjava.net/Beckya/archive/2006/11/27/83892.html</link><dc:creator>近似凯珊卓</dc:creator><author>近似凯珊卓</author><pubDate>Mon, 27 Nov 2006 14:15:00 GMT</pubDate><guid>http://www.blogjava.net/Beckya/archive/2006/11/27/83892.html</guid><wfw:comment>http://www.blogjava.net/Beckya/comments/83892.html</wfw:comment><comments>http://www.blogjava.net/Beckya/archive/2006/11/27/83892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Beckya/comments/commentRss/83892.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Beckya/services/trackbacks/83892.html</trackback:ping><description><![CDATA[
		<div>Spiel des Lebens，生存游戏？如果这么翻译恰当的话。这么一个小游戏，花了我不少心思。虽然已经交了，可是不满意原来笨笨的算法，不甘心，又改了重交一遍，也不管Tutor会不会嫌烦了。第一次做像样的小游戏，居然对它还蛮有感情的，放上来吧，留个纪念。在此特别感谢酷酷的T同学，聪明又耐心的P同学，以及来晚了想帮忙没帮上的M同学，尽管你们看不见也看不懂，呵呵^^<br /></div>
		<div>
				<br />
				<br />游戏规则：<br />任意输入需要的行数和列数，选取“活着”的格子，程序按照“生死规则”计算下一步的“生死”情况，一直点“weiter”（下一步），一直到全部死光或者“活着”的格子按规则无法死掉。<br />        生死规则：原来“活着”的格子，若周围八个格子（边缘的五个，角上的三个）有两个或三个格子也是“活着”的，则下一步仍然活着，否则，死去；原来“死”的格子，若周围的格子正好有三个格子是活的，则下一步复活，否则，仍然是死的。<br /><br />程序的变量名称都是德语的=）<br /></div>
		<div>public class Spiel_des_Lebens extends SDL{<br /> public static void main(String[] args){<br />  int m=0,n=0;<br />  boolean flag=true;</div>
		<div>        write("Geben Sie die Anzahl der Zeilen ein.");<br />  while(m==0){<br />      m=read();<br />      if(m&lt;=0){<br />       write("Nur positive Eingabe erlaubt.");<br />       m=0;<br />      }<br />  }<br />        write("Geben Sie die Anzahl der Spalten ein.");<br />  while(n==0){<br />      n=read();<br />      if(n&lt;=0){<br />       write("Nur positive Eingabe erlaubt.");<br />       n=0;<br />      }<br />  }</div>
		<div>  boolean[][] arena=new boolean[m][n];</div>
		<div>  update(arena);<br />  while(flag){<br />   flag=false;<br />   arena=veraendern(arena,n);<br />   update(arena);<br />   for(int i=0;i&lt;arena.length;i++)<br />    for(int j=0;j&lt;arena[i].length;j++){<br />     if(arena[i][j]){<br />      flag=true;<br />      break;  <br />     }<br />    }                  <br />  }<br /> }</div>
		<div> public static boolean[][] veraendern(boolean[][] arena,int n){<br />        boolean[][] speicher=new boolean[arena.length][n];<br />  for(int i=0;i&lt;arena.length;i++)<br />   for(int j=0;j&lt;arena[i].length;j++){<br />                speicher[i][j]=berechnen(arena,i,j);<br />   }<br />  return(speicher);<br /> }</div>
		<div>
				<br /> public static boolean berechnen(boolean[][] arena,int i,int j){<br />     int count=0;<br />    for(int u=i-1;u&lt;=i+1;u++){<br />      if(u&gt;=0&amp;&amp;u&lt;=arena.length-1){<br />       for(int v=j-1;v&lt;=j+1;v++){<br />        if(v&gt;=0&amp;&amp;v&lt;=arena[i].length-1&amp;&amp;arena[u][v]==true&amp;&amp;(u==i&amp;&amp;v==j)==false)<br />         count++;<br />    }<br />   }<br />  }<br />  if(arena[i][j]){<br />   if(count==2||count==3)<br />    return(true);<br />   else<br />    return(false);<br />  }<br />  else{<br />   if(count==3)<br />    return(true);<br />   else<br />    return(false);<br />  }   <br /> }<br />}<br /><br />布阵源代码 SDL：<br />import java.awt.*;<br />import java.awt.event.*;<br />import javax.swing.*;</div>
		<div>public class SDL extends MiniJava {<br /> private static final Object syncObj = new Object();<br /> private static final int w = 20;</div>
		<div> private static class But extends JButton {<br />  boolean[][] arena;<br />  int i,j;</div>
		<div>  But(boolean[][] _arena, int _i, int _j) {<br />   arena = _arena;<br />   i = _i;<br />   j = _j;<br />   setLabel();<br />   addActionListener(new ActionListener(){<br />    public void actionPerformed(ActionEvent e) {<br />     arena[i][j] = !arena[i][j];<br />     setLabel();<br />    }<br />   });<br />   setLocation(w*j,w*i);<br />  }</div>
		<div>  void setLabel() {<br />   if (arena[i][j])<br />    setBackground(Color.RED);<br />   else<br />    setBackground(Color.BLUE);<br />   setSize(w,w);<br />  }<br /> }</div>
		<div> private static class UpdateArenaFrm extends JFrame {<br />  UpdateArenaFrm(boolean[][] arena) {<br />   JPanel panel = new JPanel(null);<br />   panel.setPreferredSize(new Dimension(400,400));<br />   panel.setMinimumSize(new Dimension(400,400));<br />   JButton okBut = new JButton("Weiter!");<br />   getContentPane().add(BorderLayout.SOUTH, okBut);<br />   okBut.addActionListener(new ActionListener(){<br />    public void actionPerformed(ActionEvent e) {<br />     dispose();<br />     synchronized(syncObj) {<br />      syncObj.notifyAll();<br />     }<br />    }<br />   });<br />   addWindowListener(new WindowAdapter() {<br />    public void windowClosing(WindowEvent e) {<br />     System.exit(0);<br />    }<br />   });<br />   getContentPane().add(panel);<br />   for (int i=0; i&lt;arena.length; i++)<br />    for (int j=0; j&lt;arena[i].length; j++) {<br />     panel.add(new But(arena,i,j));<br />    }<br />   pack();<br />  }<br /> }</div>
		<div> private static JFrame frm;</div>
		<div> public static void updateArena(boolean[][] arena) {<br />  UpdateArenaFrm frm = new UpdateArenaFrm(arena);<br />  frm.setVisible(true);<br />  synchronized (syncObj) {<br />   try {<br />    syncObj.wait();<br />   } catch(Exception e) {<br />    //nichts zu tun<br />   }<br />  }<br /> }</div>
		<div> public static void update(boolean[][] arena) {<br />  updateArena(arena);<br /> }<br />}<br /><br />MiniJava源代码：<br />import javax.swing.JFrame;<br />import javax.swing.JOptionPane;</div>
		<div>public class MiniJava {<br />    // textuelle Eingabe<br />    public static String readString(String text) {<br />        JFrame frame = new JFrame();<br />        String s = JOptionPane.showInputDialog(frame, text);<br />        frame.dispose();<br />        // frame.dispose() ist unter Java1.4 notwendig, um den Dialog<br />        // korrekt zu löschen. Ansonsten terminiert das Programm nicht.</div>
		<div>        if (s == null)<br />            System.exit(0);<br />        return s;<br />    }</div>
		<div>    public static String readString() {<br />        return readString("Eingabe:");<br />    }</div>
		<div>    // Ganzzahlige Eingabe<br />    public static int readInt(String text) {<br />        JFrame frame = new JFrame();<br />        String s = JOptionPane.showInputDialog(frame, text);<br />        frame.dispose();</div>
		<div>        int x = 0;<br />        if (s == null)<br />            System.exit(0);<br />        try {<br />            x = Integer.parseInt(s.trim());<br />        } catch (NumberFormatException e) {<br />            x = readInt(text);<br />        }<br />        return x;<br />    }</div>
		<div>    public static int readInt() {<br />        return readInt("Geben Sie eine ganze Zahl ein:");<br />    }</div>
		<div>    public static int read(String text) {<br />        return readInt(text);<br />    }</div>
		<div>    public static int read() {<br />        return readInt();<br />    }</div>
		<div>    // Fließkomma Eingabe<br />    public static double readDouble(String text) {<br />        JFrame frame = new JFrame();<br />        String s = JOptionPane.showInputDialog(frame, text);<br />        frame.dispose();</div>
		<div>        double x = 0;<br />        if (s == null)<br />            System.exit(0);<br />        try {<br />            x = Double.parseDouble(s.trim());<br />        } catch (NumberFormatException e) {<br />            x = readDouble(text);<br />        }<br />        return x;<br />    }</div>
		<div>    public static double readDouble() {<br />        return readDouble("Geben Sie eine Zahl ein:");<br />    }</div>
		<div>    //<br />    // Ausgabe<br />    //<br />    public static void write(String output) {<br />        JFrame frame = new JFrame();<br />        JOptionPane.showMessageDialog(frame, output, "Ausgabe", JOptionPane.PLAIN_MESSAGE);<br />        frame.dispose();<br />    }</div>
		<div>    public static void write(int output) {<br />        write("" + output);<br />    }</div>
		<div>    public static void write(double output) {<br />        write("" + output);<br />    }<br />}</div>
<img src ="http://www.blogjava.net/Beckya/aggbug/83892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Beckya/" target="_blank">近似凯珊卓</a> 2006-11-27 22:15 <a href="http://www.blogjava.net/Beckya/archive/2006/11/27/83892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>