Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.marvin.oopLabor3;
- public class Main {
- public static void main(String[] args)
- {
- @SuppressWarnings("unused")
- MyFrame meinFenster = new MyFrame();
- }
- }
- ////////////////////////////////////////////
- package de.marvin.oopLabor3;
- import java.awt.GridLayout;
- import java.util.Random;
- import javax.swing.JFrame;
- public class MyFrame
- {
- private int fensterGroesse = 600;
- private int randomAuswahl;
- private int gridX = 8;
- private int gridY = 8;
- MyFrame()
- {
- Random r = new Random();
- JFrame f = new JFrame("Laboraufgabe 3");
- f.setSize(fensterGroesse,fensterGroesse);
- f.setLocationRelativeTo(null);
- f.setLayout(new GridLayout(gridX,gridY));
- f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- f.setResizable(false);
- GeometricObject[] geoObject = new GeometricObject[gridX*gridY];
- for(int i = 0; i < (gridX*gridY);i++)
- {
- randomAuswahl = r.nextInt(5);
- switch(randomAuswahl)
- {
- case 0:
- geoObject[i] = new Square();
- break;
- case 1:
- geoObject[i] = new Circle();
- break;
- case 2:
- geoObject[i] = new Triangle();
- break;
- case 3:
- geoObject[i] = new Pacman();
- break;
- case 4:
- geoObject[i] = new MySpecialShape();
- break;
- }
- }
- for(int i = 0; i < geoObject.length; i++)
- {
- f.add(geoObject[i]);
- }
- f.setVisible(true);
- }
- }
- ///////////////////////////////////////////
- package de.marvin.oopLabor3;
- import java.awt.Color;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Point;
- import java.util.Random;
- import javax.swing.JPanel;
- public abstract class GeometricObject extends JPanel
- {
- private static final long serialVersionUID = 1L;
- private final int MAXCOLOR = 240;
- private final int MINCOLOR = 1;
- private final int RedBorderSize = 40;
- private final int MINRANDOM = 1;
- private final int MAXRANDOM = 4;
- abstract void specialPaint(Graphics g, int StartX, int StartY, int size1,int size2);
- protected int randInt(int min, int max)
- {
- Random rand = new Random();
- int randomNum = rand.nextInt((max - min) + 1) + min;
- return randomNum;
- }
- @Override
- protected void paintComponent(Graphics g)
- {
- int FillViereck = randInt(MINRANDOM,MAXRANDOM); //Muss gleiche größe haben, deshalb eine Variable
- final Dimension dBorder = getSize(); // Bekomme die höhe und weite als Dimension Object back
- final Dimension dFill = new Dimension(dBorder.width /FillViereck, dBorder.height /FillViereck); // Erstelle selbst ein neues Object
- final Point p0Fill = new Point((dBorder.width - dFill.width) / 2,(dBorder.height - dFill.height) / 2); // X u Y Wert
- this.setColor(g);
- specialPaint(g, p0Fill.x, p0Fill.y, dFill.width,dFill.height);
- kastenErstellen(g);
- }
- private void kastenErstellen(Graphics g)
- {
- g.setColor(Color.RED); //Vorgegeben
- g.drawRect(getWidth()/RedBorderSize,getHeight()/RedBorderSize,getWidth()-2,getHeight()-2); // Sonst sind die L
- }
- protected void setColor(Graphics g)
- {
- g.setColor(new Color(randInt(MINCOLOR,MAXCOLOR),randInt(MINCOLOR,MAXCOLOR),randInt(MINCOLOR,MAXCOLOR)));
- }
- }
- ////////////////////////////////////////////////////
- package de.marvin.oopLabor3;
- import java.awt.Graphics;
- public class Circle extends GeometricObject {
- private static final long serialVersionUID = 1L;
- @Override
- void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
- {
- g.fillOval(StartX, StartY, size1,size2);
- }
- }
- /////////////////////////////////////////////////
- package de.marvin.oopLabor3;
- import java.awt.Graphics;
- public class MySpecialShape extends GeometricObject
- {
- private static final long serialVersionUID = 1L;
- private final int Startpunkte = 15;
- @Override
- void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
- {
- g.fillOval(StartX, StartY, size1,size2);
- g.fillOval(StartX-Startpunkte, StartY-Startpunkte, size1,size2);
- g.fillOval(StartX+Startpunkte, StartY-Startpunkte, size1,size2);
- g.fillOval(StartX+Startpunkte, StartY+Startpunkte, size1,size2);
- g.fillOval(StartX-Startpunkte, StartY+Startpunkte, size1,size2);
- }
- }
- ////////////////////////////////////////////////
- package de.marvin.oopLabor3;
- import java.awt.Graphics;
- public class Pacman extends GeometricObject {
- private static final long serialVersionUID = 1L;
- final int pacmanMaul = 30;
- final int pacmanMaul2 = 310;
- @Override
- void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
- {
- g.fillArc(StartX, StartY, size1,size2, pacmanMaul, pacmanMaul2);
- }
- }
- ////////////////////////////////////////////////////////
- package de.marvin.oopLabor3;
- import java.awt.Graphics;
- public class Square extends GeometricObject
- {
- private static final long serialVersionUID = 1L;
- @Override
- void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
- {
- g.fillRect(StartX, StartY, size1, size2);
- }
- }
- //////////////////////////////////////////////////
- package de.marvin.oopLabor3;
- import java.awt.Graphics;
- public class Triangle extends GeometricObject
- {
- private static final long serialVersionUID = 1L;
- final int haelfte = 2;
- @Override
- void specialPaint(Graphics g, int StartX, int StartY, int size1, int size2)
- {
- int[] xWerte = { StartX + (size1 / haelfte), StartX + (size1 - size1),StartX + (size1) }; // Erster Wert ist die Mitte des Objects
- int[] yWerte = { StartY + (size2 - size2), StartY + (size2),StartY + (size2) };
- g.fillPolygon(xWerte, yWerte, xWerte.length);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement