Guest User

Untitled

a guest
Jul 23rd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.14 KB | None | 0 0
  1. import java.awt.* ;
  2. import java.awt.event.* ;
  3. import javax.swing.* ;
  4. import java.util.ArrayList ;
  5. import java.util.Collections ;
  6.  
  7. class ruutu
  8. {
  9.    
  10.     public ruutu(int x, int y) {
  11.         x_koordinaatti = x;
  12.         y_koordinaatti = y;
  13.         tyhja = true;
  14.         rasti = true;
  15.     }
  16.    
  17.     boolean lue_tyhja () {
  18.  
  19.         return tyhja;
  20.     }
  21.    
  22.     void paivita_tyhja (boolean onko_tyhja) {
  23.  
  24.         tyhja = onko_tyhja;
  25.     }
  26.    
  27.     boolean lue_rasti () {
  28.  
  29.         return rasti;
  30.     }
  31.    
  32.     void paivita_rasti (boolean onko_rasti) {
  33.  
  34.         rasti = onko_rasti;
  35.     }
  36.    
  37.     int lue_x () {
  38.  
  39.         return x_koordinaatti;
  40.     }
  41.    
  42.     int lue_y () {
  43.  
  44.         return y_koordinaatti;
  45.     }
  46.    
  47.     void paivita_koordinaatit(int x, int y) {
  48.         x_koordinaatti = x;
  49.         y_koordinaatti = y;
  50.     }
  51.    
  52.     int x_koordinaatti;
  53.     int y_koordinaatti;
  54.     boolean tyhja; // onko ruutu tyhjä
  55.     boolean rasti; // risti vai nolla
  56. }
  57.  
  58.  
  59. public class Ristinolla extends JApplet implements MouseListener
  60. {
  61.    
  62.     ArrayList<ruutu>  ruudut   =  new ArrayList<ruutu>() ;
  63.    
  64.     Image kentta, risti, nolla;
  65.    
  66.     boolean ristin_vuoro;
  67.    
  68.     int perakkaiset;
  69.    
  70.     public void init()
  71.     {
  72.         kentta  =  getImage(getCodeBase(),"kentta.png");
  73.         risti  =  getImage(getCodeBase(),"risti.png");
  74.         nolla  =  getImage(getCodeBase(),"nolla.png");
  75.        
  76.         addMouseListener(this);
  77.        
  78.         ristin_vuoro = true;
  79.        
  80.         perakkaiset = 1;
  81.        
  82.         for (int x = 0 ; x < 20 ; x++)
  83.         {
  84.             for (int y = 0 ; y < 20 ; y++)
  85.             {
  86.                 lisaa_ruutu(new ruutu(x, y));
  87.             }
  88.         }
  89.     }
  90.    
  91.     void lisaa_ruutu(ruutu uusi_ruutu) {
  92.        
  93.         ruudut.add(uusi_ruutu);
  94.     }
  95.    
  96.     int indeksin_haku(int yhaku, int xhaku) // palauttaa ruudun indeksin halutuille koordinaateille
  97.     {
  98.         int palautus = 0;
  99.        
  100.         palautus = 20 * yhaku + xhaku - 21;
  101.        
  102.         return palautus;
  103.     }
  104.    
  105.     void tarkistus(int yy, int xx)
  106.     {
  107.         int i;
  108.        
  109.        
  110.         for(i = 1 ; i < 6 ; i++)
  111.         {
  112.        
  113.             if (ruudut.get(indeksin_haku(yy - i, xx - i)).lue_tyhja() == false)
  114.             {
  115.                 if (ruudut.get(indeksin_haku(yy - i, xx - i)).lue_rasti() == !ristin_vuoro)
  116.                 {
  117.                     perakkaiset++;
  118.                 }
  119.                 else
  120.                 {
  121.                     break;
  122.                 }
  123.             }
  124.             else
  125.             {
  126.                 break;
  127.             }
  128.         }
  129.        
  130.         for(i = 1 ; i < 6 ; i++)
  131.         {
  132.        
  133.             if (ruudut.get(indeksin_haku(yy + i, xx + i)).lue_tyhja() == false)
  134.             {
  135.                 if (ruudut.get(indeksin_haku(yy + i, xx + i)).lue_rasti() == !ristin_vuoro)
  136.                 {
  137.                     perakkaiset++;
  138.                 }
  139.                 else
  140.                 {
  141.                     break;
  142.                 }
  143.             }
  144.             else
  145.             {
  146.                 break;
  147.             }
  148.         }
  149.        
  150.     }
  151.    
  152.     public void paint(Graphics graphics)
  153.         {
  154.             super.paint(graphics );
  155.  
  156.             graphics.drawImage(kentta, 0, 0, this);
  157.             //graphics.drawImage(risti, 17, 12, this);
  158.            
  159.            
  160.             for (int i = 0 ; i < 400 ; i++)
  161.             {
  162.                 if (ruudut.get(i).lue_tyhja() == false)
  163.                 {
  164.                     if (ruudut.get(i).lue_rasti() == true)
  165.                     {
  166.                         graphics.drawImage(risti, 17 + (30 * (ruudut.get(i).lue_y())), 12 + (30 * (ruudut.get(i).lue_x())), this);
  167.                     }
  168.                    
  169.                     else
  170.                     {
  171.                         graphics.drawImage(nolla, 17 + (30 * (ruudut.get(i).lue_y())), 12 + (30 * (ruudut.get(i).lue_x())), this);
  172.                     }
  173.                 }
  174.             }
  175.            
  176.             if (perakkaiset >= 5)
  177.             {  
  178.                 graphics.drawString("Viisi putkeen!", 300, 300);
  179.             }  
  180.                 perakkaiset = 1;
  181.            
  182.            
  183.            
  184.             if (! hasFocus())
  185.             {
  186.                 requestFocus();
  187.             }
  188.         }
  189.  
  190.  
  191.     public void mouseClicked(MouseEvent e)
  192.     {
  193.         int i;
  194.         int x_click = e.getX() - 12;
  195.         int y_click = e.getY() - 17;
  196.         int x_naatti = -1 , y_naatti = -1;
  197.        
  198.         for (i = 0 ; i < 20 ; i++)
  199.         {
  200.             if (x_click > i * 30 && x_click < i * 30 + 30)
  201.             {
  202.                 x_naatti = i + 1;
  203.             }
  204.         }
  205.        
  206.         for (i = 0 ; i < 20 ; i++)
  207.         {
  208.             if (y_click > i * 30 && y_click < i * 30 + 30)
  209.             {
  210.                 y_naatti = i + 1;
  211.             }
  212.         }
  213.        
  214.         ruudut.get(indeksin_haku(y_naatti, x_naatti)).paivita_tyhja(false);
  215.        
  216.         if (ristin_vuoro == true)
  217.         {
  218.             ruudut.get(indeksin_haku(y_naatti, x_naatti)).paivita_rasti(true);
  219.             ristin_vuoro = false;
  220.         }
  221.         else
  222.         {
  223.             ruudut.get(indeksin_haku(y_naatti, x_naatti)).paivita_rasti(false);
  224.             ristin_vuoro = true;
  225.         }
  226.        
  227.         tarkistus(y_naatti, x_naatti);
  228.        
  229.         repaint();
  230.     }
  231.  
  232.     public void mouseEntered(MouseEvent e) { }
  233.  
  234.     public void mouseExited(MouseEvent e) { }
  235.  
  236.     public void mousePressed(MouseEvent e) { }
  237.  
  238.     public void mouseReleased(MouseEvent e) { }
  239.    
  240. }
Add Comment
Please, Sign In to add comment