summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2003-09-22 07:46:34 +0000
committerDimitri Sokolyuk <demon@dim13.org>2003-09-22 07:46:34 +0000
commitbd43b10e99acacda96da885930001064f08d629c (patch)
treeec66f402d9f9ad0ec771e53ea84a1178f5b567c6
parentc7e3d91d9e4fb2a4ea4312b01d6b9ea6ff66952c (diff)
2000-Feb-13 v3
-rw-r--r--stern.cpp99
1 files changed, 65 insertions, 34 deletions
diff --git a/stern.cpp b/stern.cpp
index 6d17ebe..2db298b 100644
--- a/stern.cpp
+++ b/stern.cpp
@@ -1,7 +1,4 @@
/* $Id$ */
-// STERN.BAS 29.04.1996
-// STERN.CPP 11.02.2000
-
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
@@ -14,30 +11,34 @@ void InitProgram(void);
void MainLoop(void);
void Rotation(void);
int key(void);
+void Legende(void);
#define COPYRIGHT "Dark Alliance (c) 1996-2000 DreamDemon"
+#define DATUM "13.02.2000"
#define PI 3.14
-#define Lines 72
+#define Lines 36
static int World[Lines][3] = {
- 90, 0, 0, 10, 10, 10, 90, 0, 0, 10, 10,-10,
- 90, 0, 0, 10,-10,-10, 90, 0, 0, 10,-10, 10,
- -90, 0, 0, -10, 10, 10, -90, 0, 0, -10, 10,-10,
- -90, 0, 0, -10,-10,-10, -90, 0, 0, -10,-10, 10,
- 0, 90, 0, 10, 10, 10, 0, 90, 0, -10, 10, 10,
- 0, 90, 0, -10, 10,-10, 0, 90, 0, 10, 10,-10,
- 0,-90, 0, 10,-10, 10, 0,-90, 0, -10,-10, 10,
- 0,-90, 0, -10,-10,-10, 0,-90, 0, 10,-10,-10,
- 0, 0, 90, 10, 10, 10, 0, 0, 90, 10,-10, 10,
- 0, 0, 90, -10,-10, 10, 0, 0, 90, -10, 10, 10,
- 0, 0,-90, 10, 10,-10, 0, 0,-90, 10,-10,-10,
- 0, 0,-90, -10,-10,-10, 0, 0,-90, -10, 10,-10,
- 10, 10, 10, -10, 10, 10, 10,-10, 10, -10,-10, 10,
- 10, 10,-10, -10, 10,-10, 10,-10,-10, -10,-10,-10,
- 10, 10, 10, 10,-10, 10, -10, 10, 10, -10,-10, 10,
- 10, 10,-10, 10,-10,-10, -10, 10,-10, -10,-10,-10,
- 10, 10, 10, 10, 10,-10, 10,-10, 10, 10,-10,-10,
- -10,-10, 10, -10,-10,-10, -10, 10, 10, -10, 10,-10};
+ -60, 40, 20, -20, 40, 20,
+ -20, 40, 20, -20, 0, 20,
+ -20, 0, 20, 60, 0, 20,
+ 60, 0, 20, 60,-40, 20,
+ 60,-40, 20, -60,-40, 20,
+ -60,-40, 20, -60, 40, 20,
+
+ -60, 40,-20, -20, 40,-20,
+ -20, 40,-20, -20, 0,-20,
+ -20, 0,-20, 60, 0,-20,
+ 60, 0,-20, 60,-40,-20,
+ 60,-40,-20, -60,-40,-20,
+ -60,-40,-20, -60, 40,-20,
+
+ -60, 40, 20, -60, 40,-20,
+ -20, 40, 20, -20, 40,-20,
+ -20, 0, 20, -20, 0,-20,
+ 60, 0, 20, 60, 0,-20,
+ 60,-40, 20, 60,-40,-20,
+ -60,-40, 20, -60,-40,-20};
float X, Y, Z, sX, sY, Xa, Ya, Za, sXs, sYs, D, G, Page, Xmid, Ymid;
float R, R1, R2, R3, Sr1, Sr2, Sr3, Cr1, Cr2, Cr3, mX, mY, mZ;
@@ -104,18 +105,20 @@ void InitProgram(void)
Xmid = getmaxx() / 2;
Ymid = getmaxy() / 2;
- D = 1200; // View point and rotation values
- mZ = -850;
- mX = -5;
- R1 = 0;
- R2 = 0;
+// D = 1200; // View point and rotation values
+ D = 10000;
+// mZ = -850;
+ mZ = -10000;
+// mX = -5;
+ R1 = 0.3;
+ R2 = 0.0;
R3 = 0.3;
G = 0.3;
}
void MainLoop(void)
{
- int k;
+ int k, Demo=0;
while((k=key()) != 27)
{
switch(k) {
@@ -143,17 +146,32 @@ void MainLoop(void)
R3 -= G;
if(R3 < 0) R3 = 2 * PI;
break;
+ case 43: // +
+ if(D < 30000) D += 1000;
+ break;
+ case 45: // -
+ if(D > 1000) D -= 1000;
+ break;
+ case 13: // Enter
+ R1 = 0.3;
+ R2 = 0.0;
+ R3 = 0.3;
+ D = 10000;
+ break;
+ case 32: // Space
+ Demo = 1 - Demo;
+ break;
default: break;
}
+ if(Demo == 1) {
+ R += 0.1;
+ if(R > (2 * PI)) R = 0;
+ R1 = R2 = R3 = R;
+ }
clearviewport();
DrawObject();
-
- outtextxy(10,10,"Esc - Quit");
- outtextxy(550,10,"Q W E");
- outtextxy(550,20,"A S D");
- outtextxy(10,330,COPYRIGHT);
-
+ Legende();
setvisualpage(Page);
Page = 1 - Page;
setactivepage(Page);
@@ -180,3 +198,16 @@ extern int key(void)
}
return k;
}
+
+void Legende(void)
+{
+ outtextxy( 10, 10,"Space: Run/Stop Demo");
+ outtextxy( 10, 20,"Enter: Set to Zero");
+ outtextxy( 10, 30,"+/- : Zoom");
+ outtextxy( 10, 40,"Esc : Quit");
+ outtextxy(470, 10,"Rotation:");
+ outtextxy(550, 10,"Q W E");
+ outtextxy(550, 20,"A S D");
+ outtextxy( 10,330,COPYRIGHT);
+ outtextxy(540,330,DATUM);
+}