[DGD] How would this code work?

Noah Gibbs noah_gibbs at yahoo.com
Sun May 25 21:26:32 CEST 2003


  Here's something really simple:  it's not
"container->moveInto()", it's "container::moveInto()"
when container is something you inherit from.

  Also, in container it doesn't look like you're
initializing mhContents, so you'll probably get an
error the first time you add an object into the
mapping, something about an invalid argument for the
left side of "+", because you're trying to add nil to
1, and you can't do that.
  That's assuming you're in full-on error checking
mode, of course.  In modes where nil is equivalent to
0 there'll be no problem at all.

  But in any case, yes, your idea looks sound. 
Phantasmal, not shockingly, does a lot of these same
things :-)

--- Ben Chambers <bjchamb at bellsouth.net> wrote:
>
------------------------------------------------------------
> GameObject.c (this is one of the base objects that
> will be provided)
>
------------------------------------------------------------
> /* move the object <a> into this object
>  * throws an error if this is not possible
>  */
> atomic void moveInto(object a)
> {
>    error("This object is not a container.");
> }
> 
> /* move the object <a> out of this object
>  * throws an error if this is not possible
>  */
> atomic void moveFrom(object a)
> {
>    error("This object is not a container.");
> }
> 
> /* move this object from object <a> into object <b>
>  * throws an error if this is not possible
>  */
> atomic void move(object a, object b)
> {
>    a->moveFrom(this_object());
>    b->moveInto(this_object());
> }
>
------------------------------------------------------------
> Container.c (this is one of the base objects that
> will be provided)
>
------------------------------------------------------------
> inherit "GameObject.c";
> mapping mhContents;
> /* move the object <a> into this object
>  * throws an error if this is not possible
>  */
> atomic void moveInto(object a)
> {
>    mhContents[object_name(a)] =
> mhContents[object_name(a)] + 1;
> }
> 
> /* move the object <a> out of this object
>  * throws an error if this is not possible
>  */
> atomic void moveFrom(object a)
> {
>    if (!mhContents[object_name(a)])
>       error("Cannot remove something that isn't
> here.");
>    mhContents[object_name(a)] =
> mhContents[object_name(a)] - 1;
> }
>
------------------------------------------------------------
> Backpack.c (this is something a wizard might make)
>
------------------------------------------------------------
> inherit "GameObject.c";
> inherit container "Container.c";
> 
> int miCapacity;
> int miContentSize;
> 
> int remaining_capacity()
> {
>    return miCapacity - miContentSize;
> }
> 
> /* move the object <a> into this object
>  * throws an error if this is not possible
>  */
> atomic void moveInto(object a)
> {
>    container->moveInto(a);
> 
>    if (a->item_size() > remaining_capacity())
>       error("That will not fit.");
>    miContentSize += a->item_size();
> }
> 
> /* move the object <a> out of this object
>  * throws an error if this is not possible
>  */
> atomic void moveFrom(object a)
> {
>    container->moveFrom(a);
> 
>    miContentSize -= a->item_size();
> 
> }
> 
> 
> 
> 
> Would it behave as expected?  Are there any problems
> that code like this
> could cause in the future?  Any suggestions for ways
> of improving this?
> 
>
_________________________________________________________________
> List config page: 
http://list.imaginary.com/mailman/listinfo/dgd


=====
------
noah_gibbs at yahoo.com

__________________________________
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.
http://search.yahoo.com
_________________________________________________________________
List config page:  http://list.imaginary.com/mailman/listinfo/dgd



More information about the DGD mailing list