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; }
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; }