Beispiel #1
0
QString Move::name() const
{
  QString s,tmp;

  /* sideway moves... */
  if (type == left3 || type == right3) {
    int f1, f2, df;
    
    f1 = f2 = field;
    df = 2* Board::fieldDiffOfDir(direction);
    if (df > 0)
      f2 += df;    
    else
      f1 += df;
    
    s = nameOfPos( f1 );
    s += '-';
    s += nameOfPos( f2 );
    s+= '/';
    s+= (type == left3) ? nameOfDir(direction-1): nameOfDir(direction+1);
  }
  else if ( type == left2 || type == right2) {
    int f1, f2, df;

    f1 = f2 = field;
    df = Board::fieldDiffOfDir(direction);
    if (df > 0)
      f2 += df;    
    else
      f1 += df;
    
    s = nameOfPos( f1 );
    s += '-';
    s += nameOfPos( f2 );
    s+= '/';
    s+= (type == left2) ? nameOfDir(direction-1): nameOfDir(direction+1);
  }
  else if (type == none) {
    s = QString("??");
  }
  else {
    s = nameOfPos( field );
    s += '/';
    s += nameOfDir(direction);
    
    tmp = (type <3 ) ? i18n("Out") :
          (type <6 ) ? i18n("Push") : QString("");
    if (!tmp.isEmpty()) {
      s += '/';
      s += tmp;
    }
  }
  return s;
}
Beispiel #2
0
char* Move::name() const
{
  static char s[30];
  int pos;

  /* sideway moves... */
  if (type == left3 || type == right3) {
    int f1, f2, df;
    
    f1 = f2 = field;
    df = 2* Board::fieldDiffOfDir(direction);
    if (df > 0)
      f2 += df;    
    else
      f1 += df;
    
    pos = sprintf(s, "%s-", nameOfPos( f1 ));
    const char* dir = (type == left3) ? nameOfDir(direction-1): nameOfDir(direction+1);
    sprintf(s+pos, "%s/%s", nameOfPos( f2 ), dir);	    
  }
  else if ( type == left2 || type == right2) {
    int f1, f2, df;

    f1 = f2 = field;
    df = Board::fieldDiffOfDir(direction);
    if (df > 0)
      f2 += df;    
    else
      f1 += df;

    pos = sprintf(s, "%s-", nameOfPos( f1 ));
    const char* dir = (type == left2) ? nameOfDir(direction-1): nameOfDir(direction+1);
    sprintf(s+pos, "%s/%s", nameOfPos( f2 ), dir);
  }
  else if (type == none) {
    return "??";
  }
  else {
    int p = sprintf(s, "%s/%s",
		    nameOfPos( field ), nameOfDir(direction));
    
    if (type<3) sprintf(s+p,"/Out");
    else if (type<6) sprintf(s+p,"/Push");
  }
  return s;
}