Advertisement
Zidinjo

Labor3

May 3rd, 2015
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.58 KB | None | 0 0
  1. package de.marvin.oopLabor3;
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args)
  6.     {
  7.         @SuppressWarnings("unused")
  8.         MyFrame meinFenster = new MyFrame();
  9.     }
  10. }
  11. ////////////////////////////////////////////
  12.  
  13. package de.marvin.oopLabor3;
  14.  
  15. import java.awt.GridLayout;
  16. import java.util.Random;
  17. import javax.swing.JFrame;
  18.  
  19. public class MyFrame
  20. {
  21.     private int fensterGroesse = 600;
  22.     private int randomAuswahl;
  23.     private int gridX = 8;
  24.     private int gridY = 8;
  25.    
  26.     MyFrame()
  27.     {
  28.         Random r = new Random();
  29.         JFrame f = new JFrame("Laboraufgabe 3");
  30.         f.setSize(fensterGroesse,fensterGroesse);
  31.         f.setLocationRelativeTo(null);
  32.         f.setLayout(new GridLayout(gridX,gridY));
  33.         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  34.         f.setResizable(false);
  35.        
  36.         GeometricObject[] geoObject = new GeometricObject[gridX*gridY];
  37.            
  38.         for(int i = 0; i < (gridX*gridY);i++)
  39.         {
  40.             randomAuswahl = r.nextInt(5);
  41.             switch(randomAuswahl)
  42.             {
  43.                 case 0:
  44.                     geoObject[i] = new Square();
  45.                     break;
  46.                 case 1:
  47.                     geoObject[i] = new Circle();
  48.                     break;
  49.                 case 2:
  50.                     geoObject[i] = new Triangle();
  51.                     break;
  52.                 case 3:
  53.                     geoObject[i] = new Pacman();
  54.                     break;
  55.                 case 4:
  56.                     geoObject[i] = new MySpecialShape();
  57.                     break;
  58.             }
  59.         }
  60.         for(int i = 0; i < geoObject.length; i++)
  61.         {
  62.             f.add(geoObject[i]);
  63.         }
  64.         f.setVisible(true);
  65.     }
  66. }
  67. ///////////////////////////////////////////
  68. package de.marvin.oopLabor3;
  69.  
  70. import java.awt.Color;
  71. import java.awt.Dimension;
  72. import java.awt.Graphics;
  73. import java.awt.Point;
  74. import java.util.Random;
  75.  
  76. import javax.swing.JPanel;
  77.  
  78. public abstract class GeometricObject extends JPanel
  79. {
  80.     private static final long serialVersionUID = 1L;
  81.  
  82.     private final int MAXCOLOR = 240;
  83.     private final int MINCOLOR = 1;
  84.     private final int RedBorderSize = 40;
  85.     private final int MINRANDOM = 1;
  86.     private final int MAXRANDOM = 4;
  87.    
  88.     abstract void specialPaint(Graphics g, int StartX, int StartY, int size1,int size2);
  89.    
  90.     protected int randInt(int min, int max)
  91.     {
  92.         Random rand = new Random();
  93.         int randomNum = rand.nextInt((max - min) + 1) + min;
  94.  
  95.         return randomNum;
  96.     }
  97.    
  98.     @Override
  99.     protected void paintComponent(Graphics g)
  100.     {
  101.         int FillViereck = randInt(MINRANDOM,MAXRANDOM); //Muss gleiche größe haben, deshalb eine Variable
  102.    
  103.         final Dimension dBorder = getSize();  // Bekomme die höhe und weite als Dimension Object back
  104.         final Dimension dFill = new Dimension(dBorder.width /FillViereck, dBorder.height /FillViereck); // Erstelle selbst ein neues Object
  105.         final Point p0Fill = new Point((dBorder.width - dFill.width) / 2,(dBorder.height - dFill.height) / 2); // X u Y Wert
  106.         this.setColor(g);
  107.         specialPaint(g, p0Fill.x, p0Fill.y, dFill.width,dFill.height);
  108.         kastenErstellen(g);
  109.     }
  110.    
  111.     private void kastenErstellen(Graphics g)
  112.     {
  113.         g.setColor(Color.RED); //Vorgegeben
  114.         g.drawRect(getWidth()/RedBorderSize,getHeight()/RedBorderSize,getWidth()-2,getHeight()-2); // Sonst sind die L
  115.     }
  116.    
  117.     protected void setColor(Graphics g)
  118.     {
  119.         g.setColor(new Color(randInt(MINCOLOR,MAXCOLOR),randInt(MINCOLOR,MAXCOLOR),randInt(MINCOLOR,MAXCOLOR)));
  120.     }
  121. }
  122. ////////////////////////////////////////////////////
  123. package de.marvin.oopLabor3;
  124.  
  125. import java.awt.Graphics;
  126.  
  127. public class Circle extends GeometricObject {
  128.  
  129.     private static final long serialVersionUID = 1L;
  130.  
  131.     @Override
  132.     void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
  133.     {
  134.         g.fillOval(StartX, StartY, size1,size2);
  135.     }
  136. }
  137. /////////////////////////////////////////////////
  138. package de.marvin.oopLabor3;
  139.  
  140. import java.awt.Graphics;
  141.  
  142. public class MySpecialShape extends GeometricObject
  143. {
  144.     private static final long serialVersionUID = 1L;
  145.     private final int Startpunkte = 15;
  146.  
  147.     @Override
  148.     void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
  149.     {
  150.     g.fillOval(StartX, StartY, size1,size2);
  151.         g.fillOval(StartX-Startpunkte, StartY-Startpunkte, size1,size2);
  152.         g.fillOval(StartX+Startpunkte, StartY-Startpunkte, size1,size2);
  153.         g.fillOval(StartX+Startpunkte, StartY+Startpunkte, size1,size2);
  154.         g.fillOval(StartX-Startpunkte, StartY+Startpunkte, size1,size2);
  155.     }
  156. }
  157. ////////////////////////////////////////////////
  158. package de.marvin.oopLabor3;
  159.  
  160. import java.awt.Graphics;
  161.  
  162. public class Pacman extends GeometricObject {
  163.  
  164.     private static final long serialVersionUID = 1L;
  165.     final int pacmanMaul = 30;
  166.     final int pacmanMaul2 = 310;
  167.  
  168.     @Override
  169.     void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
  170.     {
  171.         g.fillArc(StartX, StartY, size1,size2, pacmanMaul, pacmanMaul2);
  172.     }
  173. }
  174. ////////////////////////////////////////////////////////
  175. package de.marvin.oopLabor3;
  176.  
  177. import java.awt.Graphics;
  178.  
  179. public class Square extends GeometricObject
  180. {
  181.     private static final long serialVersionUID = 1L;
  182.  
  183.     @Override
  184.     void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
  185.     {
  186.         g.fillRect(StartX, StartY, size1, size2);
  187.     }
  188. }
  189. //////////////////////////////////////////////////
  190. package de.marvin.oopLabor3;
  191.  
  192. import java.awt.Graphics;
  193.  
  194. public class Triangle extends GeometricObject
  195. {
  196.     private static final long serialVersionUID = 1L;
  197.     final int haelfte = 2;
  198.  
  199.     @Override
  200.     void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
  201.     {
  202.         int[] xWerte = { StartX + (size1 / haelfte), StartX + (size1 - size1),StartX + (size1) }; // Erster Wert ist die Mitte des Objects
  203.         int[] yWerte = { StartY + (size2 - size2), StartY + (size2),StartY + (size2) };
  204.         g.fillPolygon(xWerte, yWerte, xWerte.length);
  205.     }
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement