|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 4487 (0x1187)
Types: TextFile
Names: »main.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/X/Roids/main.c«
/* main.c -- create our windows and initialize things. */
#define MAIN
#include "roids.h"
#include <X11/Label.h>
#include <X11/VPaned.h>
static int width, height; /* Size of window. */
static Pixel defaultfore; /* Default foreground */
static Pixel defaultback; /* Default background */
static Pixel scorepixel; /* Color for score. */
static XrmOptionDescRec table[] = {
{"-debug", "*debug", XrmoptionNoArg, NULL},
};
static XtResource resources[] = {
{XtNwidth, XtCWidth, XtRInt, sizeof(int),
(Cardinal)&width, XtRImmediate, (caddr_t) 500},
{XtNheight, XtCHeight, XtRInt, sizeof(int),
(Cardinal)&height, XtRImmediate, (caddr_t) 800},
{"debug", "Debug", XtRBoolean, sizeof(Boolean),
(Cardinal)&debug, XtRString, "off"},
{"numdir", "NumDir", XtRInt, sizeof(int),
(Cardinal)&numdir, XtRImmediate, (caddr_t) 48},
{"shipradius", "ShipRadius", XtRInt, sizeof(int),
(Cardinal)&shipradius, XtRImmediate, (caddr_t) 12},
{"shipwait", "ShipWait", XtRInt, sizeof(int),
(Cardinal)&shipwait, XtRImmediate, (caddr_t) 10},
{"rockwait", "RockWait", XtRInt, sizeof(int),
(Cardinal)&rockwait, XtRImmediate, (caddr_t) 30},
{"shotwait", "ShotWait", XtRInt, sizeof(int),
(Cardinal)&shotwait, XtRImmediate, (caddr_t) 30},
{"shipcolor", "ShipColor", XtRPixel, sizeof(Pixel),
(Cardinal)&shippixel, XtRString, "green"},
{"rockcolor", "RockColor", XtRPixel, sizeof(Pixel),
(Cardinal)&rockpixel, XtRString, "gold"},
{"shotcolor", "ShotColor", XtRPixel, sizeof(Pixel),
(Cardinal)&shotpixel, XtRString, "red"},
{"scorecolor", "ScoreColor", XtRPixel, sizeof(Pixel),
(Cardinal)&scorepixel, XtRString, "violetred"},
{"maxvelocity", "MaxVelocity", XtRFloat, sizeof(float),
(Cardinal)&maxv, XtRString, "3.0"},
{"maxrockspeed", "MaxRockSpeed", XtRFloat, sizeof(float),
(Cardinal)&maxrockspeed, XtRString, "5.0"},
{"accelerationPercentage", "AccelerationPercentage", XtRFloat,
sizeof(float), (Cardinal) &accper, XtRString, "0.1"},
{"shotAcceleration", "ShotAcceleration", XtRFloat,
sizeof(float), (Cardinal) &shotacc, XtRString, "2.0"},
{"maxshots", "MaxShots", XtRInt, sizeof(int),
(Cardinal) &maxshots, XtRImmediate, (caddr_t) 4},
{"shotduration", "ShotDuration", XtRInt, sizeof(int),
(Cardinal) &shotduration, XtRImmediate, (caddr_t) 1000},
{"defaultfore", "DefaultFore", XtRPixel, sizeof(Pixel),
(Cardinal) &defaultfore, XtRString, "white"},
{"defaultback", "DefaultBack", XtRPixel, sizeof(Pixel),
(Cardinal) &defaultback, XtRString, "black"},
};
static void CvtStringToFloat(args, num_args, fromVal, toVal)
ArgList args;
Cardinal num_args;
XrmValue *fromVal;
XrmValue *toVal;
{
static float i;
if (sscanf((char *)fromVal->addr, "%f", &i) == 1) {
toVal->size = sizeof(float);
toVal->addr = (caddr_t) &i;
} else {
toVal->size = 0;
toVal->addr = NULL;
}
}
static void AddResource(r, p)
char *r;
Pixel *p;
{
XrmValue value;
XrmDatabase db = XtDatabase(dpy);
value.size = sizeof(Pixel);
value.addr = (caddr_t) p;
XrmPutResource(&db, r, XtRPixel, &value);
}
main(argc, argv)
Cardinal argc;
char **argv;
{
static Arg args[] = {
{XtNwidth, NULL},
{XtNheight, NULL},
};
static Arg scoreargs[] = {
{XtNforeground, NULL},
};
Widget pane;
extern WidgetClass labelwidgetclass;
srandom(time(0));
toplevel = XtInitialize(argv[0], "Roids", table, XtNumber(table),
&argc, argv);
dpy = XtDisplay(toplevel);
XtAddConverter(XtRString, XtRFloat, CvtStringToFloat, NULL, 0);
XtGetApplicationResources(toplevel, (caddr_t) NULL,
resources, XtNumber(resources),
NULL, (Cardinal) 0);
AddResource("*background", &defaultback);
if (DisplayCells(dpy, 0) <= 2) {
shippixel = defaultfore;
rockpixel = defaultfore;
shotpixel = defaultfore;
scorepixel = defaultfore;
}
args[0].value = (XtArgVal) width;
args[1].value = (XtArgVal) height;
pane = XtCreateWidget("pane", vPanedWidgetClass, toplevel,
args, XtNumber(args));
XtManageChild(pane);
scoreargs[0].value = (XtArgVal) scorepixel;
scorewidget = XtCreateWidget("score", labelWidgetClass, pane,
scoreargs, XtNumber(scoreargs));
XtManageChild(scorewidget);
gamewidget = (RoidsWidget)
XtCreateWidget("field", roidsWidgetClass, pane, NULL, 0);
XtManageChild(gamewidget);
XtRealizeWidget(toplevel);
XtMainLoop();
}
Punt(msg)
{
fprintf(stderr, "%s\n", msg);
exit(1);
}