Operators are special symbols that are used to represent simple
computations like addition and multiplication. Most of the operators in
C++ do exactly what you would expect them to do, because they are
common mathematical symbols. For example, the operator for adding two
integers is +. The following are all legal C++ expressions whose m
eaning is more or less obvious:
1+1 iHour – 1 iHour * 60 + iMinute iMinute / 60
Another less obvious but interesting operator is
%
. It is called modulus operator
. The modulus operator works on integers (and integer expressions) and
yields the remainder when the first operand is divided by the second.
You can use it the same way as other operators. For example
7 % 3
will yield 1.
Expressions can contain
both variables names and integer values. In each case the name of the
variable is replaced with its value before the computation is
performed. Addition, subtraction and multiplication all do what you
expect, but you might be surprised by division. For example, the
following program:
void Scene1 ()
{
int
iHour, iMinute;
iHour = 11;
iMinute = 59;
Text TotalMinutes ( iHour *
60 + iMinute );
Text HourFraction ( iMinute /
60 );
TotalMinutes.SetVisible (
true );
SetTime ( 1.0 );
TotalMinutes.SetVisible (
false );
HourFraction.SetVisible (
true );
SetTime ( 2.0 );
}
will show you two numbers in your cartoon:
719
and
0
. Stop, but why zero???!!! It should be
0.983333
, should not it? The reason for the discrepancy is that C++ is
performing integer division. When both operands are integers the result
is also integer and it is rounded down. It is here that the modulus
(remainder) operator comes in. 59 % 60 is 59. You’re basically back to
first grade arithmetic (before you were introduced to the decimal
points, i.e. “59 divided by 60 is 0 with a remainder of 59).
Note: Historically,
integer arithmetic was used for thousands of years before the decimal
point was introduced. Simple things like 3/2 = 1 ½ work fine – but for
larger or much smaller numbers, things get messy.
If you want to perform a floating-point division then at least one
operand must be a floating-point. For example you could use
60.0
or a
double
variable. The following program will work just fine:
void Scene1 ()
{
int
iHour, iMinute;
iHour = 11;
iMinute = 59;
Text TotalMinutes ( iHour *
60 + iMinute );
Text HourFraction ( iMinute /
60.0 );
TotalMinutes.SetVisible (
true );
SetTime ( 1.0 );
TotalMinutes.SetVisible (
false );
HourFraction.SetVisible (
true );
SetTime ( 2.0 );
}
In
C++ these mathematical operators work the same way for
int
and
double
values and variables. If both operands are
int
then the result is also
int
. If at least one operand is
double
then the result is
double
as well.
Alan Sturgess shared an excellent video he made using Tales Animator! You can still download Tales Animator here. Unfortunately it is only available for Wi
There is a prototype of simple online character designer available
HERE. It is only a prototype,
it does not contain many pieces yet but it can already generat
Web Cartoon Maker 1.5 is finally here! You can download it
HERE!
Here is what was updated in version 1.5:
Web Cartoon Maker Desktop Edition is now fully standal