Files
TempleOS-Rijn/SparrowOS/Demo/GameStarters/Coach.CPP
T
2018-09-08 21:45:28 +02:00

178 lines
4.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
$BG,2$
$SP,"<1>",1$
$SP,"<2>",2$ $SP,"<3>",3$ $SP,"<4>",4$ $SP,"<5>",5$ $SP,"<6>",6$ $SP,"<7>",7$ $SP,"<8>",8$ $SP,"<9>",9$ $SP,"<10>",10$
$BG$
#define BASE_X (GR_WIDTH/2)
#define BASE_Y (3*GR_HEIGHT/4)
#define TEE_HEIGHT 34
#define BATTER_T 0.25
#define NUM_BATTER_IMGS 4
U8 *batter_imgs[NUM_BATTER_IMGS]={$IB,"<2>",2$,$IB,"<3>",3$,$IB,"<4>",4$,$IB,"<5>",5$};
#define RUNNER1_T 1.5
#define NUM_RUNNER1_IMGS 6
U8 *runner1_imgs[NUM_RUNNER1_IMGS]={$IB,"<5>",5$,$IB,"<6>",6$,$IB,"<7>",7$,$IB,"<7>",7$,$IB,"<7>",7$,$IB,"<8>",8$};
#define RUNNER2_T 0.4
#define NUM_RUNNER2_IMGS 4
U8 *runner2_imgs[NUM_RUNNER2_IMGS]={$IB,"<8>",8$,$IB,"<9>",9$,$IB,"<8>",8$,$IB,"<10>",10$};
F64 t0,hit_t0;
F64 ball_x,ball_y;
U0 DrawIt(CTask *task,CDC *dc)
{
F64 tt=tP(task)-t0;
I64 i=(NUM_BATTER_IMGS-1)*tt/BATTER_T;
U8 *inter;
task->text_attr=GREEN<<4;
dc->color=WHITE;
dc->pen_width=3;
GrLine3(dc,BASE_X,BASE_Y,0,BASE_X-200,BASE_Y-200,0);
GrLine3(dc,BASE_X,BASE_Y,0,BASE_X+200,BASE_Y-200,0);
CSpritePlot3(dc,BASE_X,BASE_Y,0,$IB,"<1>",1$);
dc->color=WHITE;
GrCircle(dc,ball_x+BASE_X,ball_y+BASE_Y-TEE_HEIGHT,2);
if (!t0)
CSpritePlot3(dc,BASE_X-23,BASE_Y,0,batter_imgs[0]);
else if (i<NUM_BATTER_IMGS-1) {
inter=CSpriteInterpolate(batter_imgs[i],batter_imgs[i+1],
((NUM_BATTER_IMGS-1)/BATTER_T)*(tt%(BATTER_T/(NUM_BATTER_IMGS-1))));
CSpritePlot3(dc,BASE_X-23,BASE_Y,0,inter);
Free(inter);
if (!hit_t0 && tt>BATTER_T/2)
hit_t0=tP(task);
} else {
tt-=BATTER_T;
i=(NUM_RUNNER1_IMGS-1)*tt/RUNNER1_T;
if (i<NUM_RUNNER1_IMGS-1 ) {
inter=CSpriteInterpolate(runner1_imgs[i],runner1_imgs[i+1],
((NUM_RUNNER1_IMGS-1)/RUNNER1_T)*(tt%(RUNNER1_T/(NUM_RUNNER1_IMGS-1))));
CSpritePlot3(dc,BASE_X-23,BASE_Y,0,inter);
Free(inter);
} else {
tt-=RUNNER1_T;
i=NUM_RUNNER2_IMGS*tt/RUNNER2_T;
if (i<30) {
inter=CSpriteInterpolate(runner2_imgs[i%NUM_RUNNER2_IMGS],runner2_imgs[(i+1)%NUM_RUNNER2_IMGS],
(NUM_RUNNER2_IMGS/RUNNER2_T)*(tt%(RUNNER2_T/NUM_RUNNER2_IMGS)));
CSpritePlot3(dc,BASE_X-23-50*tt,BASE_Y-50*tt,0,inter);
Free(inter);
} else {
t0=0;
ball_x=0;
ball_y=0;
}
}
}
}
#define BALL_PATH_PTS 7
CD3I32 ball_path[BALL_PATH_PTS]={
{0,0,0},{20,-40,0},{40,20,0},
{40,20,0},{50,-30,0},{55,10,0},
{55,10,0}
};
Bool PlotBall(U8 *,I64 _x,I64 _y,I64)
{
ball_x=_x; ball_y=_y;
Sleep(3);
return TRUE;
}
U0 AnimateTask(I64)
{
while (TRUE) {
if (hit_t0) {
Noise(25,2000,3000);
BSpline2(NULL,&ball_path,BALL_PATH_PTS,&PlotBall);
hit_t0=0;
}
Sleep(1);
}
}
U0 Init()
{
t0=0;
hit_t0=0;
ball_x=0;
ball_y=0;
}
U0 TeeBall()
{
SettingsPush; //See $LK,"SettingsPush","MN:SettingsPush"$
WinMax;
WinBorder;
Preempt(OFF);
Fs->win_inhibit|=WIF_DBL_CLICK;
WordStat;
Fs->animate_task=Spawn(&AnimateTask,NULL,"Animate",Fs);
MenuPush(
"File {"
" Abort(,CH_SHIFT_ESC);"
" Exit(,CH_ESC);"
"}"
"Play {"
" Swing(,CH_SPACE);"
" Restart(,CH_NEW_LINE);"
"}"
);
Init;
DocCursor;
DocClear;
Fs->draw_it=&DrawIt;
try {
while (TRUE) {
switch (GetChar(NULL,FALSE)) {
case CH_NEW_LINE:
Init;
break;
case CH_SPACE:
t0=tP;
break;
case CH_SHIFT_ESC:
case CH_ESC:
goto tb_done;
}
}
tb_done:
} catch
CatchAll;
SettingsPop;
MenuPop;
}
TeeBall;
’ üÿÿÿÿÿÿÿþÿÿÿÝÿÿÿþÿÿÿÝÿÿÿÿÿÿÿþÿÿÿßÿÿÿÇÿÿÿüÿÿÿÛÿÿÿúÿÿÿÇÿÿÿüÿÿÿÇÿÿÿ»ÿÿÿÇÿÿÿ×ÿÿÿÛÿÿÿüÿÿÿÉÿÿÿÙÿÿÿ
ëÿÿÿ’ üÿÿÿÿÿÿÿþÿÿÿÝÿÿÿþÿÿÿÝÿÿÿôÿÿÿþÿÿÿßÿÿÿÇÿÿÿüÿÿÿÛÿÿÿúÿÿÿÇÿÿÿüÿÿÿÇÿÿÿ»ÿÿÿÇÿÿÿ
ÙÿÿÿÙÿÿÿüÿÿÿÉÿÿÿÙÿÿÿÙÿÿÿ’ üÿÿÿÿÿÿÿþÿÿÿÝÿÿÿþÿÿÿÝÿÿÿôÿÿÿþÿÿÿßÿÿÿÈÿÿÿüÿÿÿÛÿÿÿüÿÿÿÈÿÿÿþÿÿÿÊÿÿÿ»ÿÿÿÈÿÿÿ
×ÿÿÿ ÓÿÿÿÊÿÿÿ
ÙÿÿÿÃÿÿÿ’ üÿÿÿÿÿÿÿþÿÿÿÝÿÿÿþÿÿÿÝÿÿÿþÿÿÿþÿÿÿßÿÿÿÈÿÿÿüÿÿÿÛÿÿÿüÿÿÿÆÿÿÿÆÿÿÿ»ÿÿÿþÿÿÿÊÿÿÿ×ÿÿÿÕÿÿÿüÿÿÿÊÿÿÿÛÿÿÿ
»ÿÿÿ2þÿÿÿ€þÿÿÿàÿÿÿ’ üÿÿÿþÿÿÿÝÿÿÿþÿÿÿÝÿÿÿøÿÿÿüÿÿÿþÿÿÿßÿÿÿøÿÿÿÅÿÿÿþÿÿÿÚÿÿÿÆÿÿÿÆÿÿÿþÿÿÿºÿÿÿþÿÿÿÇÿÿÿ×ÿÿÿÕÿÿÿûÿÿÿÆÿÿÿÛÿÿÿ ðÿÿÿ’ üÿÿÿþÿÿÿÝÿÿÿþÿÿÿÝÿÿÿøÿÿÿüÿÿÿþÿÿÿßÿÿÿøÿÿÿÅÿÿÿÚÿÿÿÆÿÿÿüÿÿÿÆÿÿÿþÿÿÿºÿÿÿþÿÿÿÇÿÿÿþÿÿÿÚÿÿÿøÿÿÿÜÿÿÿûÿÿÿÆÿÿÿøÿÿÿÚÿÿÿôÿÿÿôÿÿÿ’ üÿÿÿþÿÿÿÝÿÿÿþÿÿÿÝÿÿÿøÿÿÿüÿÿÿþÿÿÿßÿÿÿÆÿÿÿøÿÿÿÜÿÿÿøÿÿÿÆÿÿÿüÿÿÿÆÿÿÿþÿÿÿºÿÿÿøÿÿÿÆÿÿÿþÿÿÿÚÿÿÿÞÿÿÿÆÿÿÿÜÿÿÿôÿÿÿ ’ ôÿÿÿþÿÿÿÝÿÿÿþÿÿÿÝÿÿÿøÿÿÿüÿÿÿþÿÿÿßÿÿÿÆÿÿÿòÿÿÿØÿÿÿøÿÿÿÆÿÿÿüÿÿÿÆÿÿÿúÿÿÿ¼ÿÿÿøÿÿÿÆÿÿÿþÿÿÿÚÿÿÿÜÿÿÿÆÿÿÿÜÿÿÿúÿÿÿ
’ úÿÿÿþÿÿÿÝÿÿÿþÿÿÿÝÿÿÿøÿÿÿòÿÿÿþÿÿÿßÿÿÿÆÿÿÿüÿÿÿàÿÿÿøÿÿÿÆÿÿÿüÿÿÿÆÿÿÿøÿÿÿ¼ÿÿÿøÿÿÿÆÿÿÿþÿÿÿÚÿÿÿþÿÿÿÜÿÿÿÆÿÿÿúÿÿÿØÿÿÿøÿÿÿ