This page was last updated on March 13th, 2020(UTC) and it is currently May 30th, 2023(UTC).
That means this page is 3 years, 78 days, 2 hours, 1 minutes and 59 seconds old. Please keep that in mind.
42 - Really Getting Ahead
I made some changes to SETTINGS.H, which you will find interesting.
#ifndef _SETTINGS_H
//Defines are compiletime only variables.
#define xsize 320
#define ysize 200
#define starnum 200
//-------------------------------------------------------------------------
extern "C" void srand(int seed);
extern "C" int rand();
extern "C" int time(int ptr);
//-------------------------------------------------------------------------
#define defkey(x, y) const int KEY_##x = y;
defkey(esc, 0x01)
defkey(til, 0x29)
defkey(min, 0x0c)
defkey(equ, 0x0d)
defkey(bspace, 0x0e)
defkey(tab, 0x0f)
defkey(q, 0x10)
defkey(w, 0x11)
defkey(e, 0x12)
defkey(r, 0x13)
defkey(t, 0x14)
defkey(y, 0x15)
defkey(u, 0x16)
defkey(i, 0x17)
defkey(o, 0x18)
defkey(p, 0x19)
defkey(lsqrbrkt, 0x1a)
defkey(rsqrbrkt, 0x1b)
defkey(bslash, 0x2b)
defkey(caps, 0x3a)
defkey(a, 0x1e)
defkey(s, 0x1f)
defkey(d, 0x20)
defkey(f, 0x21)
defkey(g, 0x22)
defkey(h, 0x23)
defkey(j, 0x24)
defkey(k, 0x25)
defkey(l, 0x26)
defkey(scln, 0x27)
defkey(quot, 0x28)
defkey(enter, 0x1c)
defkey(lshift, 0x2a)
defkey(z, 0x2c)
defkey(x, 0x2d)
defkey(c, 0x2e)
defkey(v, 0x2f)
defkey(b, 0x30)
defkey(n, 0x31)
defkey(m, 0x32)
defkey(comma, 0x33)
defkey(period, 0x34)
defkey(fslash, 0x35)
defkey(rshift, 0x36)
defkey(ctrl, 0x1d)
defkey(alt, 0x38)
defkey(space, 0x39)
defkey(up, 0x48)
defkey(down, 0x50)
defkey(left, 0x4b)
defkey(right, 0x4d)
//The following keys can't use the macro.
#define KEY_1 0x02
#define KEY_2 0x03
#define KEY_3 0x04
#define KEY_4 0x05
#define KEY_5 0x06
#define KEY_6 0x07
#define KEY_7 0x08
#define KEY_8 0x09
#define KEY_9 0x0a
#define KEY_0 0x0b
//-------------------------------------------------------------------------
extern "C" int easymode();
extern "C" char buffer[0xfa00];
extern "C" char keymap[0x80];
#endif
#define _SETTINGS_H true
"#ifndef" is "if not #defined", which is a nifty little trick that we can use to ensure code is not "redefined" when included more than once by a single file. Next, we have macros (compile-time-only functions created with #define statements), which the syntax explains itself (outside of "##" which allowsed us to turn KEY_X into whatever we wanted it to be through "concatination after evaluateion"). I didn't test all these keys, but you'll find it fairly useful in the next lesson. Beware, macros and some of their functions cannot be relied on from compiler to compiler, and I also expect this behavior to change over time. However, they're very useful for making some repetitive tasks like this easier.
Get your own web kitty here!
©Copyright 2010-2023. All rights reserved.