⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 control.cpp

📁 一个三维打斗游戏
💻 CPP
字号:
// (C) Copyright 1996 by Anthony J. Carin.  All Rights Reserved.

#include "stdafx.h"
#include "control.h"
#include "levels.h"

control::control(baseobject *ptr)
{
   rstep        = FALSE;
   object       = ptr;
   maincmd      = 
   rstepcmd     = 
   lstepcmd     = 
   rruncmd      = 
   lruncmd      = 
   rstepbackcmd = 
   lstepbackcmd = 
   turnleftcmd  = 
   turnrightcmd = 
   pickupcmd    = 
   blockcmd     = NULL;
   loadmaincmd();
   maincmd->purgeold();
   blocking = FALSE;
}

control::~control()
{
   delete maincmd;
   delete rstepcmd;
   delete lstepcmd;
   delete rruncmd;
   delete lruncmd;
   delete rstepbackcmd;
   delete lstepbackcmd;
   delete turnleftcmd;
   delete turnrightcmd;
   delete pickupcmd;
   delete blockcmd;
}

void control::stepfoward()
{
   rstep = (char) !rstep;
   if (rstep)
   {
      loadrstepcmd();
		rstepcmd->restart();
		maincmd->append(*rstepcmd);
   }
   else
   {
      loadlstepcmd();
		lstepcmd->restart();
		maincmd->append(*lstepcmd);
   }
   blocking = FALSE;
}

void control::runfoward()
{
   rstep = (char)!rstep;
   if (rstep)
   {
      loadrruncmd();
		rruncmd->restart();
		maincmd->append(*rruncmd);
   }
   else
   {
      loadlruncmd();
		lruncmd->restart();
		maincmd->append(*lruncmd);
   }
   blocking = FALSE;
}

void control::stepbackward()
{
   rstep = (char)!rstep;
   if (rstep)
   {
      loadrstepbackcmd();
		rstepbackcmd->restart();
		maincmd->append(*rstepbackcmd);
   }
   else
   {
      loadlstepbackcmd();
		lstepbackcmd->restart();
		maincmd->append(*lstepbackcmd);
   }
   blocking = FALSE;
}

void control::turnleft()
{
   loadturnleftcmd();
	turnleftcmd->restart();
	maincmd->append(*turnleftcmd);
   blocking = FALSE;
}

void control::turnright()
{
   loadturnrightcmd();
	turnrightcmd->restart();
	maincmd->append(*turnrightcmd);
   blocking = FALSE;
}

void control::pickup()
{
   stopeverything();
   loadpickupcmd();
	pickupcmd->restart();
	maincmd->append(*pickupcmd);
   blocking = FALSE;
}

void control::block()
{
   loadblockcmd();
	blockcmd->restart();
	maincmd->append(*blockcmd);
   blocking = TRUE;
}

void control::falldown()
{
   command tmp("falldown.cmd");
	maincmd->append(tmp);
}

void control::issuecommands()
{
   if (maincmd->nomore())
      return;
   object->followcommands(*maincmd);
}

void control::stopwalking()
{
	maincmd->remove(TURNLEFT);
   maincmd->remove(TURNRIGHT);
   maincmd->remove(MOVEFOWARD);
   maincmd->remove(MOVEBACKWARD);
   blocking = FALSE;
}

void control::stopeverything()
{
	maincmd->remove(NOMORE);
   maincmd->restart();
   blocking = FALSE;
}

void control::selectpunch(short v,CString& punch)
{
    stopeverything();
    if (maincmd->isempty())
    {
        CString tmpstr;
        if (v < 0)
            v = 0;
        if (v > 100)
            v = 99;
        float fv = (float) v/100.0f;
        tmpstr = picklist(fv, punch);
        if (!tmpstr.IsEmpty())
        {
            command tmpcom((LPCTSTR) tmpstr);
            maincmd->append(tmpcom);
        }
    }
    blocking = FALSE;
}

void control::gothit(instruction& inst, short bonus)
{
    char tmpptr[20];
    switch (inst())
    {
    case THEYDO:
        strcpy(tmpptr,inst.string());
        strcat(tmpptr,".CMD");
        break;
    case STRIKETOP:
        if (blocking)
            strcpy(tmpptr,"HITTOP.CMD");
        else
            strcpy(tmpptr,"HHITTOP.CMD");
        break;
    case STRIKEMED:
        if (blocking)
            strcpy(tmpptr,"HITMED.CMD");
        else
            strcpy(tmpptr,"HHITMED.CMD");
        break;
    case STRIKEBOT:
        if (blocking)
            strcpy(tmpptr,"HITBOT.CMD");
        else
            strcpy(tmpptr,"HHITBOT.CMD");
        break;
    }
	 maincmd->purge();
    command tmpcom(tmpptr);
    if (bonus)
        tmpcom.AddToValue(HURTME, bonus);
    maincmd->append(tmpcom);
    if (blocking)
        block();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -