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); }
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); }
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 */
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 }