Term Project Ideas
Here are some ideas for term projects:
-
Simulate a moving "meteor" in a box: In this you should show a
meteor moving a box back and forth in a straight line
You can show a meteor as a fading ray of light from head to tail --
something that has a dark bright color at the head that gradually
fades to the tail before disappearing. That is, assume the head
is bright red. The color of the meteor should decrease gradually
becoming medium red in the middle, then fading to light red at
the tail before disappearing (i.e., colorless).
- Have a rectangular box of a reasonably big size.
- Move the meteor in the box in a random straight line,
to start with. Whenever it hits the edges of the wall,
it should reflect off and go back in another straight line.
Keep doing this indefinitely, until the user decides to stop it.
- Have two buttons -- one to start the program (which initiates
the meteor to start moving) and another button to stop the meteor.
- You can have another drop down menu to control the speed of the
meteor -- something like "slow", "medium" and "fast".
There is a game called "Jezzball" that used to come with old version
of Windows (Win-95) Operating systems. In fact, you can find the
C/C++ source code at http://www.allegro.cc/depot/Jezzball.
Download the code, play the game and understand how the game works.
Then, implement a stripped down version of Jezzball in Javascript.
That is,
- This program should have a rectangular box.
- Generate "n" balls, where n is in the range [1-4].
Note "n" should be a variable -- it should work
with any value of n in the range [1-4].
Each ball should should move in a straight line bouncing off
the wall (as in the "moving meteor" project).
- Implement the case when the mouse button click cuts the
rectangle into a smaller piece.
- Try to handle the case when the ball hit against each other.
That is, they should bounce back of each other. If not,
just ignore the case and let them go through in their original
path, as though they did not hit each other.
- You DO NOT have to worrry about scoring, etc. Just show
the balls moving back and forth.
Social networking sites like LinkedId, Facebook, etc.
are very popular today. In this project, you will implement
a very simple social networking site, along the lines of LinkedIn.
Please don't use any databases here. Everything given below
is transient -- that is, the user profiles are created dynamically
when the program runs, and are gone once the program ends.
That is,
- Create an object for a "user". The uer should have a profile,
which includes standard features used in LinkedIn, like,
"Name", "Education", "Professional Experience" and
"My Company". You can use other fields if you wish.
- Create "Connections" from one user to other users
and keep track of the number of connections
and all the connections, for each user.
A user cannot have a "connection" to himself.
- Generate about ten random users in your program.
You can give them meaningful names, and profiles.
Also create random connections from every user to
at least one other user, and no more than four others.
- Provide a button to "Add User", which when pressed,
gives a form where the user can enter user information
(similar to the forms example you did for HW1 and HW2).
The form will have the profile fields given above.
In this form, also include a drop down menu of all
the other available users that this particular user wants
to be his connections. Make sure at least one connection
is selected. When the use submits it, add it to
the current list of users, your program is keeping
track of.
- Instead of using a "login" and "password" mechanism
that LinkedIn uses, provide a button "Change User".
When the user presses this button, provide a drop down
menu of all the profiles currently stored,
and let the user choose one profile from them.
Show the profile of the person chosen.
You are basically using "Change User" to select a user,
instead of login and password. That is, the user
should have the option to choose any of the stored profiles.
Show the entire profile of the user selected.
- For any profile user-1 that the user selects to view,
- Create another button, for editing the profile,
"Edit My Profile". When the user presses this button,
display the values of the user-1 and
give options to the user to edit and save them.
That is ther user should be able to press "Edit My Profile",
change the values of user-1 there, and "Save" them.
- Create a drop down menu "Show other users",
which shows all the other users. When the user selects
another user, say user-2, show the profile of user2
and also whether user-2 is (a) connected to user-1
(b) connected to someone connected to user-1
(c) not in his network (don't search beyond two connections).
- Use your imagination to extend it in any meaningful way,
as per your wish.