[Campus-morris-staff] suggestions for projects?
Jim Hall
jhall at morris.umn.edu
Sat Sep 6 21:31:40 UTC 2014
On Sat, Sep 6, 2014 at 3:00 PM, Elena Machkasova <elenam at morris.umn.edu>
wrote:
> Dear mentors,
>
> it would be great to start a discussion about projects here. We currently
> have 23 students signed up, with programming primary languages being python
> and Java, some Javascript, a bit of Racket, and some 2-3 people with
> possibly no programming background (at a quick glance at the list). We will
> be sending a follow-up form to get more precise information.
>
> I know one of the mentors is interested in Jes. Any other suggestions? I
> hope we can compile a list here by mid-week.
>
>
>
I like the Senet board game, and I recently found a version that's written
in Java: Senetgame <http://sourceforge.net/projects/senetgame/> (GNU GPL).
For any student familiar with Java, it would be great for someone do
bugfixes. (Unfortunately, I don't know Java.) A few suggestions:
1
. Fix the build so that the game runs via Java ("java -jar ..") rather than
relying on the compiled Senet.exe Windows binary. The source is there, so
this should be possible - but I don't know Java.
2. Remove the dependency to do an exec()
to switch between menu (Senet.jar) and game (Senet.exe). Here are the
instances (3 files):
> $ *find source/ -type f -exec fgrep Runtime.getRuntime {} \; -print*
> Process p = Runtime.getRuntime().exec("Senet.exe");
> *source/menu src/MenuFrame.java*
> Process p = Runtime.getRuntime().exec("java -jar Senet.jar");
> *source/Senet.pde*
> Process p = Runtime.getRuntime().exec("java -jar Senet.jar");
> *source/Senet.java*
3. Update the program to use completely Free audio files, rather than MP3
and WAV (neither is completely Free - see wikipedia
<http://en.wikipedia.org/wiki/Comparison_of_audio_coding_formats>). This
would require finding new audio files to replace the MP3 and WAV files,
perhaps in AU or OGG. Here are the instances of PlaySound (1 file):
> $ *fgrep -i playsound *java */*java*
> *Senet.java:* standard.PlaySound("data\\sound\\Touching Moments.mp3");
> *Senet.java:* standard.PlaySound("data\\sound\\Alchemists Tower.mp3");
> *Senet.java:* public void PlaySound(String s)
> *Senet.java:* standard.PlaySound("data\\sound\\throwSound.wav");
> *Senet.java:* standard.PlaySound("data\\sound\\illegalTurn.wav");
> *Senet.java:* standard.PlaySound("data\\sound\\swapSound.wav");
4. Update the images. *I would be happy to help create new graphics files.*
The game only uses PNG images; here are the instances (2 files):
> $ *fgrep -i png *java */*java*
> *Senet.java:* javax.swing.ImageIcon titlebaricon = new
> javax.swing.ImageIcon(loadBytes("data\\img\\ankhIcon.png"));
> *Senet.java:* standard.GetWinner("lightwins.png");
> *Senet.java:* standard.GetWinner("darkwins.png");
> *Senet.java:* DrawImage("data\\img\\ankh.png",5 * rectWidth,rectHeight
> * 1);
> *Senet.java:* DrawImage("data\\img\\vulture.png",5 *
> rectWidth,rectHeight * 2);
> *Senet.java:* DrawImage("data\\img\\water.png",6 *
> rectWidth,rectHeight * 2);
> *Senet.java:* DrawImage("data\\img\\stones.png",7 *
> rectWidth,rectHeight * 2);
> *Senet.java:* DrawImage("data\\img\\eye.png",8 * rectWidth,rectHeight
> * 2);
> *menu src/MenuFrame.java:* setIconImage(new
> javax.swing.ImageIcon(getClass().getResource("/ankhIcon.png")).getImage());
> *menu src/MenuFrame.java:* jLabel1.setIcon(new
> javax.swing.ImageIcon(getClass().getResource("/hiero1.png"))); // NOI18N
> *menu src/MenuFrame.java:* jLabel2.setIcon(new
> javax.swing.ImageIcon(getClass().getResource("/hiero2.png"))); // NOI18N
> *menu src/MenuFrame.java:* jLabel3.setIcon(new
> javax.swing.ImageIcon(getClass().getResource("/title.PNG"))); // NOI18N
> *menu src/MenuFrame.java:* aboutLabel.setIcon(new
> javax.swing.ImageIcon(getClass().getResource("/aboutImage.PNG"))); // NOI18N
5. Add different themes. This builds on #4. It would be cool to add a
variable into the path to the graphics images. Instead of "data/*img*
/ankhIcon.png" use something like "data/*themes*/*default*/ankhIcon.png"
and "data/*themes*/*modern*/ankhIcon.png" and "data/*themes*/*neon*
/ankhIcon.png". For a quick fix, the theme could be hardcoded, or set as an
environment variable. As a longer-term project (something a student might
do outside of this event) would create an Options menu to set the theme.
6. Add achievements. Some simple achievements might be "win as black," "win
as white," "win before opponent moves any pieces off board," "win without
falling in the water," etc. A longer-term project (outside of this event)
would create a menu to view the available achievements, and mark the ones
you've already earned.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openhatch.org/pipermail/campus-morris-staff/attachments/20140906/906e0ff1/attachment.html>
More information about the Campus-morris-staff
mailing list