Exemplo n.º 1
0
static struct dict_entry *
makeDictEntry(const char *word)
{
	struct dict_entry *rv=NULL;

	assert(word);

	rv=calloc(1, sizeof(struct dict_entry));
	assert(rv);

	rv->word=strdup(word);
	assert(rv->word);
	rv->score=scoreWord(rv->word);

	return(rv);
}
Exemplo n.º 2
0
int
main(int argc, char**argv)
{
	int i=0;
	printf("Score of %s is %d\n", argv[1], scoreWord(argv[1]));

	printf("Verifying scoring algorithm.\n");
	for(i=0; i<255; i++) {
		if(scoreLetter(i) != originalScoreLetter(i)) {
			printf("Value not equal for %d\n", i);
		}
	}
	printf("Scoring algorithm verified.\n");

	return(0);
}
Exemplo n.º 3
0
int InputThreadEntryPoint(void *data) {
  SDL_Event event;
  SDL_Joystick *js;
  int num_js, i;

  char *threadname;

  threadname = (char *) data;


  /* by default keyboard repeat is disabled in SDL 
     use SDL_EnableKeyrepeat(delay, rate) to enable it */
  /* SDL_EnableKeyRepeat(350, 30); */
  
  num_js = SDL_NumJoysticks();
  if (num_js == 0) {
    fprintf(stderr, "No joysticks were detected.\n");
    myExit (-20);
  } /* if */

  js = SDL_JoystickOpen(0);
  if (js == NULL) {
    fprintf(stderr, "Unable to open joystick: %s\n.", SDL_GetError());
    myExit (-20);
  } /* if */

  while((!exit_flag) && (SDL_WaitEvent(&event) != 0)) {
    SDL_keysym keysym;
    
    /* SDL_WaitEvent has filled in our event structure with the next event.
       We check its type field to find out what has happened */
    
    switch(event.type) {
    case SDL_JOYAXISMOTION:
      if ((event.jaxis.which == 0) && (event.jaxis.axis <2))
	movePlayer(event.jaxis.axis, event.jaxis.value);
      break;
      
    case SDL_JOYBUTTONUP:
      break;

    case SDL_JOYBUTTONDOWN:
      if (event.jbutton.which == 0)
	switch(event.jbutton.button) {
	case 0:
	  delLetter();
	  break;
	case 2:
	  fireShot();
	  break;
	case 3:
	  scoreWord();
	  break;
	} /* switch */
      break;

    case SDL_KEYDOWN:
      keysym = event.key.keysym;

      /* toggle full screen mode */
      if (keysym.sym == SDLK_f) {
	fprintf(stderr, "'F' pressed, toggling fullscreen.\n");
	toggleFullScreen();
      } /* if */

      /* would you like a zombie? */
      if (keysym.sym == SDLK_z) {
	fprintf(stderr, "'Z' pressed, sending in a zombie.\n");
	newZombie();
      } /* if */
      
      /* did the user press the Q key? */
      if (keysym.sym == SDLK_q) {
	fprintf(stderr, "'Q' pressed, exiting.\n");
	myExit(0);
      } /* if */
      break;
      
    case SDL_KEYUP:
      break;
      
    case SDL_QUIT:
      fprintf(stderr, "Quit event. Bye.\n");
      exit_flag = 1;
      break;
    } /* switch */
  } /* while */
  SDL_JoystickClose(js);
  fprintf(stderr, "%s is now exiting.\n", threadname);
  
  myExit(1);
} /* InputThreadEntryPoint */
Exemplo n.º 4
0
int getScore()
{
	for(int i = 0;i<15;i++) //initialize
	{
		for(int j = 0;j<15;j++)
		{
			tempstr[i][j].letter = ' ';
			tempstr[i][j].type = TILE_NORMAL;
			tempstr[i][j].scored = false;
		}
		tempstring[i].letter = ' ';
		tempstring[i].type = TILE_NORMAL;
		tempstring[i].scored = false;
	}
	counter = 0;

    int x,y,u,v,m,n,no,flag=0,flagx=0,temp=0,tempscore=0,noo=0;

	if(Board[7][7].letter==' ') 
		return -4; //starting square not occupied

    if(countmoves==0)  // Starting condition
	{
		for(x=0;x<15;x++)  
		{
			for(y=0;y<15;y++)
			{
				if(Board[x][y].letter!=' ')    //First letter encountered of the game.  .
				{
					if(y<14 && Board[x][y+1].letter!=' ')
					   y+=traverseWord(y,x,'S');
					else if(x<14 && Board[x+1][y].letter==' ')
						if(x>0 && Board[x-1][y].letter==' ')
							return -1; //single letter found
				}
			}
		}
		for(y=0;y<15;y++)
		{
			for(x=0;x<15;x++)
			{
				if(Board[x][y].letter!=' ')    //First letter encountered of the game.  .
				{
					if(x<14 && Board[x+1][y].letter!=' ')
					   x+=traverseWord(y,x,'S');
					else if(y<14 && Board[x][y+1].letter==' ')
						if(y>0 && Board[x][y-1].letter==' ')
							return -1; //single letter found
				}
			}
		}
	}
	else
	{
		for(x=0;x<15;x++)  // Processing all words Horizontally
		{
			for(y=0;y<14;y++)
			{          
				if(Board[x][y].letter!= ' ')
                {
					if(Board[x][y+1].letter!=' ')
					{
						temp=traverseWord(y,x,'H');
						if(temp!=-1)
							y+=temp;
                    }
					else if(x<14 && Board[x+1][y].letter==' ')
					{
						if(x>0 && Board[x-1][y].letter==' ')
							return -1; //single letter found
						else if(x==0)
							return -1;
					}
					else if(x==14)
					{
						if(Board[x-1][y].letter==' ')
							return -1;
					}
                }
			}
		}
    
		for(u=0;u<15;u++)  //Processing all words vertically
		{
			for(v=0;v<14;v++)
			{
				if(Board[v][u].letter!= ' ')
				{
					if(Board[v+1][u].letter!=' ')
					{
						temp=traverseWord(u,v,'V');
						if(temp!=-1)
							v+=temp;
					}
					else if(u<14 && Board[v][u+1].letter==' ')
					{
						if(y>0 && Board[v][u-1].letter==' ')
							return -1; //single letter found
						else if(y==0)
							return -1;
					}
					else if(u==14)
					{
						if(Board[v][u-1].letter==' ')
							return -1;
					}
				}
			}
		}
	}

	if(counter==0)
		return -3; //no words added

    for(m=0;m<counter;m++)  // Checking for the zeroes being equal to Tiles placed
    {
		noo=0;
        for(n=0;n<15;n++)
        {
			if(tempstr[m][n].letter==' ') break;
            if(tempstr[m][n].scored==false)
                noo++;
        }
		if(noo==tilesplaced)
        {
            flag=1;
            break;
        }
    }
    if(flag)    // Final evaluation of strings.
    {
		flagx=1;
		for(m=0;m<counter;m++)
		{
			int has1 = 0;
			int has0 = 0;
			for(n=0;n<15;n++)
			{
				tempstring[n]=tempstr[m][n];
				/*if(tempstr[m][n].scored==true)
					has1 = 1;
				if(tempstr[m][n].scored==false)
					has0 = 1;*/
				if(tempstr[m][n].letter==' ') break;
			}
			//tempstring[n+1].letter=' ';
			//if((has0 && has1) || countmoves==0)
			//{
				int wordscore = scoreWord(tempstring);
				if(wordscore==-1)
				{
					flagx=0;
					break;
				}
				else
				{
					tempscore += wordscore;
				}
			//}
        }
    }
	else 
		return -1; //invalid placement
    if(flagx)
	{
		if(tempscore!=0)
			return tempscore;
		return -2; //invalid word added
	}
    else
		return -2; //invalid word added
}