Intermediate projects

Intermediate projects javelin Mon, 2006-09-04 21:30

These projects are designed for coders with some experience. They are intended to help introduce less common or more powerful functions and coding idioms.

Softcoded comsystem

Softcoded comsystem javelin Mon, 2006-09-04 21:31

The goal of this challenge is to create a softcoded communications system that involves a single object with a single channel. You may assume that this object will be placed in a zone master room, and all the players using it will be in rooms in that zone. Another way to look at this challenge is that you're creating a way for players to shout across a zone.

The object should allow people to join or leave the channel. Players who have joined the channel should be able to send messages on the channel, which should be heard by all other players on the channel. Players should also be able to get a list of all the players who are on the channel.

*Extra Challenge*: Handle regular messages as speech, but handle messages starting with a colon (:) as remote poses.

*Extra Challenge*: Add a second chat channel, and do it in way that would make it easy to add more channels. Players should be able to do everything with the second that they could with the first, and should also be able to get a list of all the channels in the system.

This coding challenge by: Talvo

Repeatable Timer Loop System

Repeatable Timer Loop System elraver Tue, 2008-01-22 21:18

The object of this challenge is to create a function system that uses a stopwatch style timer similar to standard wait() command.

However, it should be universal (Accepting any input for either of the styles of running the system shown below), cleanly repeatable in a looping fashion, and finish cleanly.

Thus, you should be able to do either:
Repeat '[pemit(%#,[time()])]' every 15 minutes for the next 2 hours, then stopping the loop cleanly.
After running '@eval [setq(1,0)]'

Repeat '[setq(1,[add(%q1,1)])]' every 5 minutes until %q1 = 10, then stopping the loop cleanly.

Both of these things should be able to be done by the user, utilizing your system.

Potentially useful commands/functions you may or may not wish to consider: @wait, @notify, @drain, @trigger, @halt, until(), while(), secs(), time(), convsecs(), convtime(), timefmt(), @function (wizhelp for that one)

Extra Challenge: Create the system to only need one function for either of the styles of use.

Extra Challenge: Allow the system to work either as a function or added @command.

Extra Challenge: Perform the challenge without use of @halt.