예제 #1
0
int
put(void)	/* synonyms = {buckle, strap, tie} */
{
	if (wordvalue[wordnumber + 1] == ON) {
		wordvalue[++wordnumber] = PUTON;
		return (cypher());
	}
	if (wordvalue[wordnumber + 1] == DOWN) {
		wordvalue[++wordnumber] = DROP;
		return (cypher());
	}
	puts("I don't understand what you want to put.");
	return(-1);

}
예제 #2
0
파일: 102chiffrement.c 프로젝트: k6s/tek1
int		main(int argc, char **argv)
{
  char		*msg;
  int		key[4];
  int		flag;
  int		*res;
  size_t	msg_len;

  if (argc == 8)
    {
      flag = atoi(argv[7]);
      if (check_base(argv[6]))
	{
	  if ((flag == 0 && (msg = check_msg(argv[1])))
	      || (flag == 1 && (msg = check_msg_base(argv[1], argv[6]))))
	    {
	      if (get_key(argv[2], argv[3], argv[4], argv[5], key))
		{
		  if (flag == 1)
		    inv_key(key);
		  res = cypher(msg, key, flag, argv[6], &msg_len);
		  if (flag)
		    inv_key(key);
		  print_msg(argv[1], key, argv[6], res, flag, msg_len);
		  free(res);
		  return (0);
		}
	    }
	}
      printf("Invalid args\n");
    }
  else
    usage();
  return (0);
}
예제 #3
0
 static void
 process_block(state_type &state,
               block_type const &block) {
     block_cypher_type cypher(block);
     state_type new_state = cypher.encypher((state_type const &)state);
     combine_F f;
     f(state, new_state);
 }
예제 #4
0
파일: com2.c 프로젝트: jyin0813/OpenBSD-src
int
put(void)
{				/* synonyms = {buckle, strap, tie} */
	if (inc_wordnumber(words[wordnumber], "what"))
		return(-1);
	if (wordvalue[wordnumber] == ON) {
		wordvalue[wordnumber] = PUTON;
		wordtype[wordnumber] = VERB;
		return (cypher() - 1);
	}
	if (wordvalue[wordnumber] == DOWN) {
		wordvalue[wordnumber] = DROP;
		wordtype[wordnumber] = VERB;
		return (cypher() - 1);
	}
	puts("I don't understand what you want to put.");
	return (-1);
}
예제 #5
0
파일: vigenere.c 프로젝트: Azuesflip/pset2
int main(int argc, string argv[])
{
    string key = "";
    string userInput = "";
    bool inputGood = false;
    
    do
    {
        // Check to see if user did command prompt correctly.
        if(argc != 2)
        {
            printf("You are not doing the command line prompt correctly.\n");
            printf("Please use: \'./vigenere key\' where key is a single word to use as your cypher\n");
            // Error code for falure to give proper command prompt.
            return 1;
        }
        else
        {
            key = argv[1];
            
            int keyLen = strlen(key);
            
            // Check to see if the user used a valid int value to cypher the text.
            for(int i = 0; i < keyLen; i++)
            {
                if(isalpha(key[i]))
                {
                    inputGood = true;
                }
                else
                {
                    printf("You are not doing the command line prompt correctly.\n");
                    printf("Please use: \'./vigenere key\' where key is a single word to use as a cypher\n");
                    // Error code for failed int value.
                    return 2;
                }
            }
        }
    } while(!inputGood);
    
    // Gets input from user to cypher.
    printf("Enter text to Vigenere Cypher: \n");
    userInput = GetString();
    
    // Show user their input.
    printf("You entered: \n %s \n", userInput);
    
    printf("Here is your cyphered text: \n");
    
    cypher(userInput, key);
    
    return 0;
}
예제 #6
0
int
main(int argc, char **argv)
{
	char mainbuf[LINELENGTH];
	char *next;

	/* Open the score file then revoke setgid privileges */
	open_score_file();
	setgid(getgid());

	initialize(argc < 2 || strcmp(argv[1], "-r"));
start:
	news();
	beenthere[position]++;
	if (notes[LAUNCHED])
		crash();	/* decrements fuel & crash */
	if (matchlight) {
		puts("Your match splutters out.");
		matchlight = 0;
	}
	if (!notes[CANTSEE] || testbit(inven, LAMPON) ||
	    testbit(location[position].objects, LAMPON)) {
		writedes();
		printobjs();
	} else
		puts("It's too dark to see anything in here!");
	whichway(location[position]);
run:
	next = getcom(mainbuf, sizeof mainbuf, ">-: ",
	    "Please type in something.");
	for (wordcount = 0; next && wordcount < 20; wordcount++)
		next = getword(next, words[wordcount], -1);
	parse();
	switch (cypher()) {
	case -1:
		goto run;
	case 0:
		goto start;
	default:
		exit(1); /* Shouldn't happen */
	}
	return (1);
}
예제 #7
0
void kiss (void)
{
    while (wordtype[++wordnumber] != NOUNS && wordnumber <= wordcount)
	continue;
    // The goddess must be "taken" first if bathing. This will remove her from the bath and move her into the throne room.
    if (wordtype[wordnumber] == NOUNS && wordvalue[wordnumber] == NORMGOD && testbit(location[position].objects, BATHGOD)) {
	wordvalue[--wordnumber] = TAKE;
	cypher();
	return;
    }
    if (wordtype[wordnumber] == NOUNS) {
	if (testbit(location[position].objects, wordvalue[wordnumber])) {
	    pleasure++;
	    printf("Kissed.\n");
	    switch (wordvalue[wordnumber]) {
		case NORMGOD:
		    switch (godready++) {
			case 0: puts("She squirms and avoids your advances."); break;
			case 1: puts("She is coming around; she didn't fight it as much."); break;
			case 2: puts("She's beginning to like it."); break;
			default: puts("She's gone limp."); break;
		    }
		    break;
		case NATIVE:
		    puts("Her lips are warm and her body robust. She pulls you down to the ground.");
		    break;
		case TIMER:
		    puts("The old man blushes.");
		    break;
		case MAN:
		    puts("The dwarf punches you in the kneecap.");
		    break;
		default:
		    pleasure--;
	    }
	} else
	    puts("I see nothing like that here.");
    } else
	puts("I'd prefer not to.");
}
예제 #8
0
파일: NX7Seg.cpp 프로젝트: AlexisTM/NX7Seg
void nx7seg::write(char value[], int sizeArray){
  clear();
  int posChar = 0;
  for(int i = 0; i< n_7seg; i++){
    // No overflow
    if(posChar == sizeArray)
      break;
    if(i == n_7seg)
      break;
      
    byte data = cypher(value[posChar]);
    
    // If we got a point for next value
    if(posChar+1 != sizeArray){
      if(value[posChar+1] == '.'){
        data = data & dic_numbers[10];
        posChar++;
      }
    }
    buffer(i, data);
    posChar++;
  }
}
int main(){
char choose;

do{
char text[1000];
printf("Enter option:");
scanf("%c",&choose);
getchar();
if(choose=='c'){
	printf("Enter text:");
	scanf("%1000s", text);
	cypher(text);
	getchar();
}
if(choose=='d'){
	printf("Enter text:");
	scanf("%1000s", text);
	decypher(text);
	getchar();
}

}while(choose!='q');
return 0;
}
예제 #10
0
int
fight(int enemy, int strength)
{
	int lifeline;
	int hurt;
	char auxbuf[LINELENGTH];
	char *next;
	int i;
	int exhaustion;

	exhaustion = lifeline = 0;
fighton:
	gtime++;
	snooze -= 5;
	if (snooze > gtime)
		exhaustion = CYCLE / (snooze - gtime);
	else {
		puts("You collapse exhausted, and he pulverizes your skull.");
		die(0);
	}
	if (snooze - gtime < 20)
		puts("You look tired! I hope you're able to fight.");
	next = getcom(auxbuf, LINELENGTH, "<fight!>-: ", 0);
	for (i = 0; next && i < 10; i++)
		next = getword(next, words[i], -1);
	parse();
	switch (wordvalue[wordnumber]) {
	case KILL:
	case SMITE:
		if (testbit(inven, TWO_HANDED))
			hurt = rnd(70) - 2 * card(injuries, NUMOFINJURIES) -
			    ucard(wear) - exhaustion;
		else if (testbit(inven, SWORD) || testbit(inven, BROAD))
			hurt = rnd(50) % (WEIGHT - carrying) -
			    card(injuries, NUMOFINJURIES) - encumber -
			    exhaustion;
		else if (testbit(inven, KNIFE) || testbit(inven, MALLET) ||
		    testbit(inven, CHAIN) || testbit(inven, MACE) ||
		    testbit(inven, HALBERD))
			hurt = rnd(15) - card(injuries, NUMOFINJURIES) -
			    exhaustion;
		else
			hurt = rnd(7) - encumber;
		if (hurt < 5)
			switch (rnd(3)) {
			case 0:
				puts("You swung wide and missed.");
				break;
			case 1:
				puts("He checked your blow. CLASH! CLANG!");
				break;
			case 2:
				puts("His filthy tunic hangs by one less thread.");
				break;
			}
		else if (hurt < 10) {
			switch (rnd(3)) {
			case 0:
				puts("He's bleeding.");
				break;
			case 1:
				puts("A trickle of blood runs down his face.");
				break;
			case 2:
				puts("A huge purple bruise is forming on the side of his face.");
				break;
			}
			lifeline++;
		} else if (hurt < 20) {
			switch (rnd(3)) {
			case 0:
				puts("He staggers back quavering.");
				break;
			case 1:
				puts("He jumps back with his hand over the wound.");
				break;
			case 2:
				puts("His shirt falls open with a swath across the chest.");
				break;
			}
			lifeline += 5;
		} else if (hurt < 30) {
			switch (rnd(3)) {
			case 0:
				printf("A bloody gash opens up on his %s side.\n",
				    (rnd(2) ? "left" : "right"));
				break;
			case 1:
				puts("The steel bites home and scrapes along his ribs.");
				break;
			case 2:
				puts("You pierce him, and his breath hisses through clenched teeth.");
				break;
			}
			lifeline += 10;
		} else if (hurt < 40) {
			switch (rnd(3)) {
			case 0:
				puts("You smite him to the ground.");
				if (strength - lifeline > 20)
					puts("But in a flurry of steel he regains his feet!");
				break;
			case 1:
				puts("The force of your blow sends him to his knees.");
				puts("His arm swings lifeless at his side.");
				break;
			case 2:
				puts("Clutching his blood drenched shirt, he collapses stunned.");
				break;
			}
			lifeline += 20;
		} else {
			switch (rnd(3)) {
			case 0:
				puts("His ribs crack under your powerful swing, flooding his lungs with blood.");
				break;
			case 1:
				puts("You shatter his upheld arm in a spray of blood.  The blade continues deep");
				puts("into his back, severing the spinal cord.");
				lifeline += 25;
				break;
			case 2:
				puts("With a mighty lunge the steel slides in, and gasping, he falls to the ground.");
				lifeline += 25;
				break;
			}
			lifeline += 30;
		}
		break;

	case BACK:
		if (enemy == DARK && lifeline > strength * 0.33) {
			puts("He throws you back against the rock and pummels your face.");
			if (testbit(inven, AMULET) || testbit(wear, AMULET)) {
				printf("Lifting the amulet from you, ");
				if (testbit(inven, MEDALION) ||
				    testbit(wear, MEDALION)) {
					puts("his power grows and the walls of\nthe earth tremble.");
					puts("When he touches the medallion, your chest explodes and the foundations of the\nearth collapse.");
					puts("The planet is consumed by darkness.");
					die(0);
				}
				if (testbit(inven, AMULET)) {
					clearbit(inven, AMULET);
					carrying -= objwt[AMULET];
					encumber -= objcumber[AMULET];
				} else
					clearbit(wear, AMULET);
				puts("he flees down the dark caverns.");
				clearbit(location[position].objects, DARK);
				injuries[SKULL] = 1;
				followfight = gtime;
				return (0);
			} else {
				puts("I'm afraid you have been killed.");
				die(0);
			}
		} else {
			puts("You escape stunned and disoriented from the fight.");
			puts("A victorious bellow echoes from the battlescene.");
			if (back && position != back)
				battlestar_move(back, BACK);
			else if (ahead && position != ahead)
				battlestar_move(ahead, AHEAD);
			else if (left && position != left)
				battlestar_move(left, LEFT);
			else if (right && position != right)
				battlestar_move(right, RIGHT);
			else
				battlestar_move(location[position].down, AHEAD);
			return (0);
		}

	case SHOOT:
		if (testbit(inven, LASER)) {
			if (strength - lifeline <= 50) {
				printf("The %s took a direct hit!\n",
				    objsht[enemy]);
				lifeline += 50;
			} else {
				puts("With his bare hand he deflects the laser blast and whips the pistol from you!");
				clearbit(inven, LASER);
				setbit(location[position].objects, LASER);
				carrying -= objwt[LASER];
				encumber -= objcumber[LASER];
			}
		} else
			puts("Unfortunately, you don't have a blaster handy.");
		break;

	case DROP:
	case DRAW:
		cypher();
		gtime--;
		break;

	default:
		puts("You don't have a chance, he is too quick.");
		break;
	}
	if (lifeline >= strength) {
		printf("You have killed the %s.\n", objsht[enemy]);
		if (enemy == ELF || enemy == DARK)
			puts("A watery black smoke consumes his body and then vanishes with a peal of thunder!");
		clearbit(location[position].objects, enemy);
		power += 2;
		notes[JINXED]++;
		return (0);
	}
	puts("He attacks...");
	/* Some embellishments. */
	hurt = rnd(NUMOFINJURIES) - (testbit(inven, SHIELD) != 0) -
	    (testbit(wear, MAIL) != 0) - (testbit(wear, HELM) != 0);
	hurt += (testbit(wear, AMULET) != 0) +
	    (testbit(wear, MEDALION) != 0) + (testbit(wear, TALISMAN) != 0);
	hurt = hurt < 0 ? 0 : hurt;
	hurt = hurt >= NUMOFINJURIES ? NUMOFINJURIES - 1 : hurt;
	if (!injuries[hurt]) {
		injuries[hurt] = 1;
		printf("I'm afraid you have suffered %s.\n", ouch[hurt]);
	} else
		puts("You emerge unscathed.");
	if (injuries[SKULL] && injuries[INCISE] && injuries[NECK]) {
		puts("I'm afraid you have suffered fatal injuries.");
		die(0);
	}
	goto fighton;
}
예제 #11
0
파일: NX7Seg.cpp 프로젝트: AlexisTM/NX7Seg
void nx7seg::writeChar(char value, int digit, bool point){
  byte data = cypher(value);
  if(point)
    data = data & dic_numbers[10];
  buffer(digit, data);
}
예제 #12
0
파일: com2.c 프로젝트: jyin0813/OpenBSD-src
void
murder(void)
{
	int     n;

	if (inc_wordnumber(words[wordnumber], "whom"))
		return;
	for (n = 0; n < NUMOFOBJECTS && !((n == SWORD || n == KNIFE || n == TWO_HANDED || n == MACE || n == CLEAVER || n == BROAD || n == CHAIN || n == SHOVEL || n == HALBERD) && TestBit(inven, n)); n++)
		;
	if (n == NUMOFOBJECTS) {
		if (TestBit(inven, LASER)) {
			printf("Your laser should do the trick.\n");
			switch(wordvalue[wordnumber]) {
			case NORMGOD:
			case TIMER:
			case NATIVE:
			case MAN:
				wordvalue[--wordnumber] = SHOOT;
				cypher();
				break;
			case -1:
				puts("Kill what?");
				break;
			default:
				if (wordtype[wordnumber] != OBJECT ||
				    wordvalue[wordnumber] == EVERYTHING)
					puts("You can't kill that!");
				else
					printf("You can't kill %s%s!\n",
					    A_OR_AN_OR_BLANK(wordvalue[wordnumber]),
					    objsht[wordvalue[wordnumber]]);
				break;
			}
		} else
			puts("You don't have suitable weapons to kill.");
	} else {
		printf("Your %s should do the trick.\n", objsht[n]);
		switch (wordvalue[wordnumber]) {

		case NORMGOD:
			if (TestBit(location[position].objects, BATHGOD)) {
				puts("The goddess's head slices off.  Her corpse floats in the water.");
				ClearBit(location[position].objects, BATHGOD);
				SetBit(location[position].objects, DEADGOD);
				power += 5;
				notes[JINXED]++;
			} else
				if (TestBit(location[position].objects, NORMGOD)) {
					puts("The goddess pleads but you strike her mercilessly.  Her broken body lies in a\npool of blood.");
					ClearBit(location[position].objects, NORMGOD);
					SetBit(location[position].objects, DEADGOD);
					power += 5;
					notes[JINXED]++;
					if (wintime)
						live();
				} else
					puts("I don't see her anywhere.");
			break;
		case TIMER:
			if (TestBit(location[position].objects, TIMER)) {
				puts("The old man offers no resistance.");
				ClearBit(location[position].objects, TIMER);
				SetBit(location[position].objects, DEADTIME);
				power++;
				notes[JINXED]++;
			} else
				puts("Who?");
			break;
		case NATIVE:
			if (TestBit(location[position].objects, NATIVE)) {
				puts("The girl screams as you cut her body to shreds.  She is dead.");
				ClearBit(location[position].objects, NATIVE);
				SetBit(location[position].objects, DEADNATIVE);
				power += 5;
				notes[JINXED]++;
			} else
				puts("What girl?");
			break;
		case MAN:
			if (TestBit(location[position].objects, MAN)) {
				puts("You strike him to the ground, and he coughs up blood.");
				puts("Your fantasy is over.");
				die(0);
			}
		case -1:
			puts("Kill what?");
			break;

		default:
			if (wordtype[wordnumber] != OBJECT ||
			    wordvalue[wordnumber] == EVERYTHING)
				puts("You can't kill that!");
			else
				printf("You can't kill the %s!\n",
				    objsht[wordvalue[wordnumber]]);
		}
	}
	wordnumber++;
}
예제 #13
0
파일: cypher.c 프로젝트: radixo/openbsd-src
/* returns 0 if error or no more commands to do,
 *         1 if there are more commands remaining on the current input line
 */
int
cypher(void)
{
	int     n;
	int     junk;
	int     lflag = -1;
	char   *filename, *rfilename;
	size_t  filename_len;

	while (wordnumber <= wordcount) {
		if (wordtype[wordnumber] != VERB &&
		    !(wordtype[wordnumber] == OBJECT &&
		    wordvalue[wordnumber] == KNIFE)) {
			printf("%s: How's that?\n",
			    (wordnumber == wordcount) ? words[wordnumber - 1] : words[wordnumber]);
			return (0);
		}

		switch (wordvalue[wordnumber]) {

		case AUXVERB:
			/* Take the following word as the verb */
			wordnumber++;
			return(cypher());
			break;

		case UP:
			if (location[position].access || wiz || tempwiz) {
				if (!location[position].access)
					puts("Zap!  A gust of wind lifts you up.");
				if (!moveplayer(location[position].up, AHEAD))
					return (0);
			} else {
				puts("There is no way up.");
				return (0);
			}
			lflag = 0;
			break;

		case DOWN:
			if (!moveplayer(location[position].down, AHEAD))
				return (0);
			lflag = 0;
			break;

		case LEFT:
			if (!moveplayer(left, LEFT))
				return (0);
			lflag = 0;
			break;

		case RIGHT:
			if (!moveplayer(right, RIGHT))
				return (0);
			lflag = 0;
			break;

		case AHEAD:
			if (!moveplayer(ahead, AHEAD))
				return (0);
			lflag = 0;
			break;

		case BACK:
			if (!moveplayer(back, BACK))
				return (0);
			lflag = 0;
			break;

		case SHOOT:
			verb_with_all(location[position].objects, OBJ_PERSON,
			    shoot, "shoot at");
			break;

		case TAKE:
			if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
				int things;
				things = 0;
				for (n = 0; n < NUMOFOBJECTS; n++)
					if (TestBit(location[position].objects, n) && objsht[n]) {
						things++;
						wordvalue[wordnumber + 1] = n;
/* Some objects (type NOUNS) have special treatment in take().  For these
 * we must set the type to NOUNS.  However for SWORD and BODY all it does
 * is find which of many objects is meant, so we need do nothing here.
 * BATHGOD must become NORMGOD as well.  NOUNS with no special case must be
 * included here to get the right error.  DOOR cannot occur as an object so
 * need not be included.
 */
						switch (n) {
						case BATHGOD:
							wordvalue[wordnumber + 1] = NORMGOD;
							/* FALLTHROUGH */
						case NORMGOD:
						case AMULET:
						case MEDALION:
						case TALISMAN:
						case MAN:
						case TIMER:
						case NATIVE:
							wordtype[wordnumber + 1] = NOUNS;
							break;
						default:
							wordtype[wordnumber + 1] = OBJECT;
						}
						wordnumber = take(location[position].objects);
						wordnumber += 2;
					}
				if (!things)
					puts("Nothing to take!");
			} else
				take(location[position].objects);
			break;

		case DROP:
			if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
				int things;
				things = 0;
				for (n = 0; n < NUMOFOBJECTS; n++)
					if (TestBit(inven, n)) {
						things++;
						wordvalue[wordnumber + 1] = n;
						wordnumber = drop("Dropped");
					}
				wordnumber++;
				wordnumber++;
				if (!things)
					puts("Nothing to drop!");
			} else
				drop("Dropped");
			break;


		case KICK:
		case THROW:
			if (wordnumber < wordcount && wordvalue[wordnumber + 1] == EVERYTHING) {
				int things, wv;
				things = 0;
				wv = wordvalue[wordnumber];
				for (n = 0; n < NUMOFOBJECTS; n++)
					if (TestBit(inven, n) ||
					  (TestBit(location[position].objects, n) && objsht[n])) {
						things++;
						wordvalue[wordnumber + 1] = n;
						wordnumber = throw(wordvalue[wordnumber] == KICK ? "Kicked" : "Thrown");
					}
				wordnumber += 2;
				if (!things)
					printf("Nothing to %s!\n", wv == KICK ? "kick" : "throw");
			} else
				throw(wordvalue[wordnumber] == KICK ? "Kicked" : "Thrown");
			break;

		case TAKEOFF:
			verb_with_all(wear, 0, takeoff, "take off");
			break;

		case DRAW:
			verb_with_all(wear, 0, draw, "draw");
			break;

		case PUTON:
			verb_with_all(location[position].objects, 0, puton, "put on");
			break;

		case WEARIT:
			verb_with_all(inven, 0, wearit, "wear");
			break;

		case EAT:
			verb_with_all(inven, 0, eat, "eat");
			break;

		case PUT:
			put();
			break;

		case INVEN:
			if (ucard(inven)) {
				puts("You are holding:\n");
				for (n = 0; n < NUMOFOBJECTS; n++)
					if (TestBit(inven, n))
						printf("\t%s\n", objsht[n]);
				printf("\n= %d kilogram%s ", carrying,
				    (carrying == 1 ?  "." : "s."));
				if (WEIGHT)
					printf("(%d%%)\n", carrying * 100 / WEIGHT);
				else
					printf("(can't lift any weight%s)\n",
					    (carrying ? " or move with what you have" : ""));
				if (CUMBER)
					printf("Your arms are %d%% full.\n",
					    encumber * 100 / CUMBER);
				else
					printf("You can't pick anything up.\n");
			} else
				puts("You aren't carrying anything.");

			if (ucard(wear)) {
				puts("\nYou are wearing:\n");
				for (n = 0; n < NUMOFOBJECTS; n++)
					if (TestBit(wear, n))
						printf("\t%s\n", objsht[n]);
			} else
				puts("\nYou are stark naked.");
			if (card(injuries, NUMOFINJURIES)) {
				puts("\nYou have suffered:\n");
				for (n = 0; n < NUMOFINJURIES; n++)
					if (injuries[n])
						printf("\t%s\n", ouch[n]);
				printf("\nYou can still carry up to %d kilogram%s\n", WEIGHT, (WEIGHT == 1 ? "." : "s."));
			} else
				puts("\nYou are in perfect health.");
			break;

		case USE:
			lflag = use();
			break;

		case OPEN:
			dooropen();
			break;

		case LOOK:
			if (!notes[CANTSEE] || TestBit(inven, LAMPON) ||
			    TestBit(location[position].objects, LAMPON)
			    || matchlight) {
				beenthere[position] = 2;
				writedes();
				printobjs();
				if (matchlight) {
					puts("\nYour match splutters out.");
					matchlight = 0;
				}
			} else
				puts("I can't see anything.");
			return (0);	/* No commands after a look */
			break;

		case SU:
			if (wiz || tempwiz) {
				getnum(&position, "\nRoom (was %d) = ", position);
				getnum(&ourtime, "Time (was %d) = ", ourtime);
				getnum(&fuel, "Fuel (was %d) = ", fuel);
				getnum(&torps, "Torps (was %d) = ", torps);
				getnum(&CUMBER, "CUMBER (was %d) = ", CUMBER);
				getnum(&WEIGHT, "WEIGHT (was %d) = ", WEIGHT);
				getnum(&ourclock, "Clock (was %d) = ", ourclock);
				if (getnum(&junk, "Wizard (was %d, %d) = ", wiz, tempwiz) != -1 && !junk)
					tempwiz = wiz = 0;
				printf("\nDONE.\n");
				return (0);	/* No commands after a SU */
			} else
				puts("You aren't a wizard.");
			break;

		case SCORE:
			printf("\tPLEASURE\tPOWER\t\tEGO\n");
			printf("\t%3d\t\t%3d\t\t%3d\n\n", pleasure, power, ego);
			printf("This gives you the rating of %s in %d turns.\n", rate(), ourtime);
			printf("You have visited %d out of %d rooms this run (%d%%).\n", card(beenthere, NUMOFROOMS), NUMOFROOMS, card(beenthere, NUMOFROOMS) * 100 / NUMOFROOMS);
			break;

		/* case KNIFE: */
		case KILL:
			murder();
			break;

		case UNDRESS:
			undress();
			break;

		case RAVAGE:
			ravage();
			break;

		case SAVE:
			printf("\nSave file name (default %s):  ",
			    DEFAULT_SAVE_FILE);
			filename = fgetln(stdin, &filename_len);
			if (filename_len == 0
			    || (filename_len == 1 && filename[0] == '\n'))
				rfilename = save_file_name(DEFAULT_SAVE_FILE,
				    strlen(DEFAULT_SAVE_FILE));
			else {
				if (filename[filename_len - 1] == '\n')
					filename_len--;
				rfilename = save_file_name(filename,
				    filename_len);
			}
			save(rfilename);
			free(rfilename);
			break;

		case VERBOSE:
			verbose = 1;
			printf("[Maximum verbosity]\n");
			break;

		case BRIEF:
			verbose = 0;
			printf("[Standard verbosity]\n");
			break;

		case FOLLOW:
			lflag = follow();
			break;

		case GIVE:
			give();
			break;

		case KISS:
			kiss();
			break;

		case LOVE:
			love();
			break;

		case RIDE:
			lflag = ride();
			break;

		case DRIVE:
			lflag = drive();
			break;

		case LIGHT:
			light();
			break;

		case LAUNCH:
			if (!launch())
				return (0);
			else
				lflag = 0;
			break;

		case LANDIT:
			if (!land())
				return (0);
			else
				lflag = 0;
			break;

		case TIME:
			chime();
			break;

		case SLEEP:
			zzz();
			break;

		case DIG:
			dig();
			break;

		case JUMP:
			lflag = jump();
			break;

		case BURY:
			bury();
			break;

		case SWIM:
			puts("Surf's up!");
			break;

		case DRINK:
			drink();
			break;

		case QUIT:
			die(0);

		default:
			puts("How's that?");
			return (0);
			break;

		}
		if (!lflag)
			newlocation();
		if (wordnumber < wordcount && !stop_cypher &&
		    (*words[wordnumber] == ',' || *words[wordnumber] == '.')) {
			wordnumber++;
			return (1);
		} else
			return (0);
	}
	return (0);
}
예제 #14
0
int LoadController::exec()
{
    clean();
    QFile zeus (filename());
    if(!zeus.open(QIODevice::ReadOnly))
    {
        return -1;
    }

    QDomDocument hera;
    if(!hera.setContent(&zeus))
    {
        return -2;
    }

    QDomElement athena = hera.documentElement();
    QDomNodeList hermes = athena.elementsByTagName("user");

    for(int appolon = 0; appolon < hermes.size(); appolon++)
    {
        QDomElement gaia = hermes.at(appolon).toElement();
        UserSPointer ares = UserController::user(cypher(gaia.elementsByTagName("username").at(0).toElement().text(), 57));
        if(ares)
            ares->setType((User::UserType)cypher(gaia.elementsByTagName("type").at(0).toElement().text(), 95).toInt());
    }


    hermes = athena.elementsByTagName("category");

    for(int apollon = 0; apollon < hermes.size(); apollon++)
    {
        if(hermes.at(apollon).parentNode().toElement().tagName() != "subCategory")
        {
            CategorySPointer ares(new Category);
            QDomElement aphrodite = hermes.at(apollon).toElement();
            ares->load(aphrodite);
            if(!categories().contains(ares->name()))
                addCategory(ares);
        }
    }
    hermes = athena.elementsByTagName("entry");

    for(int apollon = 0; apollon < hermes.size(); apollon++)
    {
        if(hermes.at(apollon).parentNode().toElement().tagName() != "subMedia")
        {
            MediaSPointer ares(new Media);
            QDomElement aphrodite = hermes.at(apollon).toElement();
            ares->load(aphrodite, AbstractController::categories());
            if(!medias().contains(qMakePair(ares->category()->name(),ares->name())))
            {
                ares->category()->addAssociations(ares);
                addMedia(ares);
            }
        }
    }

    zeus.close();

    return 0;
}