|
|
1.1 ! root 1: # include "trek.h" ! 2: ! 3: # define LOGFILE "/usr/src/games/trek/log" ! 4: ! 5: /** ! 6: ** write out log ! 7: **/ ! 8: ! 9: extern long score(); ! 10: extern float atof(); ! 11: CVNTAB Lentab[] ! 12: { ! 13: "s", "hort", ! 14: "m", "edium", ! 15: "i", "ntermediate", ! 16: "l", "ong", ! 17: 0 ! 18: }; ! 19: ! 20: CVNTAB Skitab[] ! 21: { ! 22: "n", "ovice", ! 23: "f", "air", ! 24: "g", "ood", ! 25: "e", "xpert", ! 26: "c", "ommodore", ! 27: "i", "mpossible", ! 28: 0 ! 29: }; ! 30: ! 31: ! 32: char *reason[] { ! 33: "win......", ! 34: "cheating.", ! 35: "destruct.", ! 36: "burned...", ! 37: "too fast.", ! 38: "no help..", ! 39: "suffocate", ! 40: "supernova", ! 41: "nova.....", ! 42: "barrier..", ! 43: "destroyed", ! 44: "energy...", ! 45: "time.....", ! 46: "captured.", ! 47: "no crew..", ! 48: }; ! 49: ! 50: char b[200]; ! 51: char *a[20]; ! 52: float days; ! 53: ! 54: main() ! 55: { ! 56: int winlose; ! 57: int k1, k2; ! 58: long s; ! 59: ! 60: while(getlin()) { ! 61: Game.skill=index(*a[4],"nfgeci"); ! 62: Game.length=index(*a[5],"smil"); ! 63: days=atof(a[6]); ! 64: Status.ship=last(a[6]); ! 65: sscanf(a[7],"%d/%d",&k1,&k2); ! 66: Game.gkillk = k1; ! 67: Status.kling = k2-k1; ! 68: Game.helps=atoi(a[8]); ! 69: Game.killb=atoi(a[9]); ! 70: Game.kills=atoi(a[10]); ! 71: Game.killinhab=atoi(a[11]); ! 72: Game.deaths=atoi(a[12]); ! 73: winlose=lookup(a[3]); ! 74: Move.endgame=0; Game.killed=0; ! 75: if(winlose==0) ! 76: Move.endgame++; ! 77: else if(winlose<12) ! 78: Game.killed++; ! 79: ! 80: s=score(); ! 81: printf("%s\t%s\t%D\t%s\t%s\t%s\t%.2f%c\t%d/%d\t%d\t%d\t%d\t%d\t%d\n", ! 82: a[0], ! 83: a[1], ! 84: s, ! 85: a[3], ! 86: (Skitab[Game.skill-1].abrev), ! 87: (Lentab[Game.length-1].abrev), ! 88: days, ! 89: Status.ship, ! 90: Game.gkillk, Game.gkillk+Status.kling, ! 91: Game.helps, ! 92: Game.killb, ! 93: Game.kills, ! 94: Game.killinhab, ! 95: Game.deaths ! 96: ); ! 97: } ! 98: } ! 99: ! 100: long score() ! 101: { ! 102: register int u; ! 103: long s, t; /* should really be long */ ! 104: double r; ! 105: ! 106: Initial.kling=Game.skill*Game.length*5; ! 107: u = Initial.kling*1.05+5; ! 108: if(u>Game.gkillk) u=Game.gkillk; ! 109: Param.klingpwr=100+150*Game.skill+(Game.skill>=6?150:0); ! 110: s = t = Param.klingpwr / 4 * u;; ! 111: r = days; ! 112: if (r < 1.0) ! 113: r = 1.0; ! 114: r = u / r; ! 115: s =+ (t = 400 * r); ! 116: r = Status.kling; ! 117: r =/ u + 1; ! 118: s =+ (t = -1000 * r); ! 119: if (Move.endgame > 0) ! 120: { ! 121: s =+ (t = 100 * (u = Game.skill)); ! 122: } ! 123: if (Game.killed) ! 124: { ! 125: s =- 200; ! 126: } ! 127: s =+ (t = -100 * (u = Game.killb)); ! 128: s =+ (t = -100 * (u = Game.helps)); ! 129: s =+ (t = -20 * (u = Game.kills)); ! 130: s =+ (t = -150 * (u = Game.killinhab)); ! 131: if (Status.ship != ENTERPRISE) ! 132: { ! 133: s =- 200; ! 134: } ! 135: s =+ (t = 3 * (u = Game.captives)); ! 136: s =+ (t = -(u = Game.deaths)); ! 137: return (s); ! 138: } ! 139: ! 140: getlin() ! 141: { ! 142: register char *bp=b, **ap=a, *ip=b; ! 143: char c; ! 144: ! 145: while(read(0,&c,1)==1) { ! 146: if(c=='\t' || c=='\n') { ! 147: *ap++=ip; ! 148: *bp++ = 0; ! 149: ip=bp; ! 150: if(c=='\n') break; ! 151: } else *bp++ = c; ! 152: } ! 153: return(c=='\n' ? 1 : 0); ! 154: } ! 155: ! 156: index(c,s) ! 157: char c; ! 158: char *s; ! 159: { ! 160: register char *p=s; ! 161: ! 162: while(*p && c != *p) ! 163: p++; ! 164: return(p-s+1); ! 165: } ! 166: ! 167: last(s) ! 168: char *s; ! 169: { ! 170: register char c; ! 171: ! 172: while(*s) { ! 173: c = *s; s++; ! 174: } ! 175: return(c); ! 176: } ! 177: ! 178: lookup(s) ! 179: { ! 180: int r=0; ! 181: ! 182: while(cf(s,reason[r])) ! 183: r++; ! 184: return(r); ! 185: } ! 186: ! 187: cf(s1,s2) ! 188: char *s1, *s2; ! 189: { ! 190: while(*s1 == *s2 && *s2) { ! 191: s1++; s2++; ! 192: } ! 193: return(*s1 - *s2); ! 194: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.