Create a new class called circle inside of the project

Assignment Help C/C++ Programming
Reference no: EM132107841

Programming Assignment

The program will create a "mass" of jiggling amoebas. Each amoeba will be drawn as a ellipses of random size and location. After all the amoebas are placed initially, you will be able to drag a circle around the screen with the mouse.

Get Started

Under Eclipse, create a new project called Amoebas.

The Circle Class

Create a new class called Circle inside of the project

Make sure to select as its superclass, "JComponent".

Do not put the main function here.

Make sure you fully comment this code (to start you may well want to select "Generate Comments" when you build the class.

A Circle should have the following instance variables (fields):

selected - true if this circle has been clicked on

fill - Should the amoeba be solid or just an outline

offset - A Point that holds where the mouse was pressed. This is only for use when dragging

A Circle should have the following methods:

The Constructor

Constructor- Take in the x,y location for this object and the width,height of the object. It should optionally take in a "name" allowing you to name your circles.

The constructor should then "initialize the GUI element", half of the time, make this object filled in (and half of the time just outlined), half of the time, set the color to red (and half of the time blue). Additionally the constructor should "inform" java that a circle can listen to the mouse motion and dragged events.

public void paintComponent(Graphics graphics)

In order for an GUI object to "show up" on the screen Java needs to know what to do with it when it comes its time to "be drawn". The paintComponent method is invoked on ALL objects (which have been added to the main window (i.e., all Components)) by the GUI thread, whenever Java decides it is time to draw the objects (e.g., after a repaint is asked for).

This method should draw a circle (filled or hollow, as previously determined) on the "graphics" object.

public void mousePressed(MouseEvent event)

public void mouseDragged(MouseEvent event)

These are some of the last methods you should work on once you have all of your "amoebas" showing on the screen.

The functionality that we are looking for is to allow the user of the GUI to drag an object around the screen.

This can be accomplished by using the setLocation method (which is inherited from JComponent).

Note: for a more effective program, the dragged circle should be placed on top of the other circles.

All those other required Mouse Methods

We are simply going to "ignore" all the other mouse interaction (at least for this base requirements of this program). You should place comments inside the body of each method saying that the method has no use in your program.

Why can't we just remove those methods then? Answer: Because the mouse interfaces that we are implementing require them to be there... Even if they don't do anything.

The Main Program

Create a class called Main which sole purpose is to hold the main program.

The main method

The main method is a static method who merely exists to get the program running. Your main method should do the following:

create the GUI window (i.e., a JFrame),

create X circle objects and add them to the GUI window

start the jiggling

The Jiggler Class

(Or putting the jiggle where it matters)

Create a new class called Jiggler. This class should be a child (or sub) class of the Thread class. It should be in the same Project, and the same Package as the Circle class.

A Thread is a separate independent executing sub-program. We will be using our thread to "jiggle" the amoebas. The main program will also be in a thread, but that thread will end as soon as the main function ends. Finally the GUI windows, drawing, events, etc are all in their own threads.

The Jiggler class should keep track of the following information:

drawables - this should be an array (list) of our circles, but because we may draw other things in the future, do not make the type ArrayList<Circle>, make it ArrayList<JComponent>

fps - this should be a Jlabel that will show the frames per second

spread_out - true/false if the program is pushing objects apart

The Jiggler should have at least the following methods:

The Constructor

Constructor- Take in a FPS label (created by the main program but stored here) and the list of drawables (circles) which were also created by the main program but need to be stored here.

The run method, "public void run()"

The run method is the main method of a thread. Interestingly enough a thread beings, not by directly calling something like: thread.run(), but by calling: thread.start()!

In this method, your code should loop forever!

Inside of this infinite loop, randomly set the location of each component (stored in some array/list) to a new location plus or minus 1 pixel in the X and Y directions.

Reference no: EM132107841

Questions Cloud

Determining the guaranteed delivery time : For a package selected at random, what is the probability that it will be delivered in 18 hours or less?
Why do you think the researchers used this type of sample : a. Would this be called a random sample, a systematic sample, or a convenience sample? b. Why do you think the researchers used this type of sample?
Brief summary of assessment : Write a brief summary of your assessment that combines your findings from parts (a) through (c).
Displays the conversion of an entered number of dollars : Write a program named Dollars that calculates and displays the conversion of an entered number of dollars into currency denominations-20s, 10s, 5s, and 1s.
Create a new class called circle inside of the project : Make sure you fully comment this code (to start you may well want to select "Generate Comments" when you build the class.
Write a program named tests that declares five variables : Modify the Tests program to create a new one named TestsInteractive that accepts five test scores from a user.
Create one object of each concrete class - : Create one object of each concrete class - using the data given below - and store them in an array of Shapes.
How does this research study contribute to the field : Describe what you will do to complete it. List the types of resources and information you will need to obtain in order to complete each task.
Explain simmels thesis regarding how group size impacts : Simmel was primarily concerned with an examination of group size and distance in terms of impact on form and type of social interaction.

Reviews

Write a Review

C/C++ Programming Questions & Answers

  Create program that uses functions and reference parameters

Create program that uses functions and reference parameters, and asks user for the outside temperature.

  Write a program using vectors and iterators

Write a program using vectors and iterators that allows a user to maintain a personal list of DVD titles

  Write the code required to analyse and display the data

Calculate and store the average for each row and column. Determine and store the values for the Average Map.

  Write a webservices application

Write a webservices application that does a simple four function calculator

  Iimplement a client-server of the game

Iimplement a client-server version of the rock-paper-scissors-lizard-Spock game.

  Model-view-controller

Explain Model-View-Controller paradigm

  Design a nested program

How many levels of nesting are there in this design?

  Convert celsius temperatures to fahrenheit temperatures

Write a C++ program that converts Celsius Temperatures to Fahrenheit Temperatures.

  Evaluate and output the value in the given base

Write C program that will input two values from the user that are a Value and a Base with which you will evaluate and output the Value in the given Base.

  Design a base class shape with virtual functions

Design a base class shape with virtual functions

  Implementation of classes

Implementation of classes Chart and BarChart. Class barChart chould display a simple textual representation of the data

  Technical paper: memory management

Technical Paper: Memory Management, The intent of this paper is to provide you with an in depth knowledge of how memory is used in executing, your programs and its critical support for applications.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd