home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 1
/
GoldFishApril1994_CD2.img
/
d4xx
/
d498
/
wordsearch
/
src
/
wsearch1.c
< prev
Wrap
C/C++ Source or Header
|
1991-06-06
|
3KB
|
127 lines
#include <stdio.h>
#include "wsearch.h"
#include <exec/types.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
/* globals */
int w,px,py,filter,rot;
char word[MAXWORD][MAXSIZE+1];
char *key;
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
int LINK=0; /* turned off but should work */
void main()
{
int i,j,k,error,xs,xt,ys,yt,xi,yi;
char rotation[10];
IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library",0);
if(IntuitionBase == NULL)
{
fprintf(stderr,"Couldn't Open Intuition.library\n");
return;
}
GfxBase = (struct GfxBase *)
OpenLibrary("graphics.library",0);
if(GfxBase == NULL)
{
fprintf(stderr,"Couldn't Open Graphics.library\n");
return;
}
printf("Enter a filter for valid directions\n");
scanf("%d",&filter);
if(filter==0) filter = 255;
printf("Display Views\n1:(X+,Y+) 2:(X-,Y+) 3:(X+,Y-); 4:(X-,Y-)\n");
printf("5:(Y+,X+) 6:(Y-,X+) 7:(Y+,X-); 8:(Y-,X-)\n");
printf("ei. 135 would print 3 puzzles:\n");
printf(" 1 follows the key,3 flips the y axis,5 transposes xy values\n");
scanf("%s",&rotation);
printf("Enter puzzle dimensions (width height)\n");
scanf("%d %d",&px,&py);
px = px-1; py=py-1;
key = (char *)calloc((px+1)*(py+1),sizeof(char));
if(key<=0)
{
fprintf(stderr,"Unable to allocate memory\n");
exit(0);
}
for(i=0;i<=px;i++)
for(j=0;j<=py;j++)
Key(i,j) = ' ';
printf("How many words do you have?\n");
scanf("%d",&w);
w = w - 1;
printf("Enter the words:\n");
for(i=0;i<=w;i++)
scanf("%s",word[i]);
printf("Working\n");
error = wsearch();
if(error!=0)
{
fprintf(stderr,"Cannot generate puzzle (a word won't fit)\n");
exit(0);
}
printf("Key:\n");
for(j=0;j<=py;j++)
{
for(i=0;i<=px;i++)
printf("%c",Key(i,j));
printf("\n");
}
printf("\n");
for(i=0;i<=px;i++)
for(j=0;j<=py;j++)
if(Key(i,j) == ' ')
Key(i,j) = (char)(randint(25)+65);
printf("The Wordsearch(es):\n");
k = 0;
for(k=0;k<strlen(rotation);k++)
{
rot = rotation[k]-48;
if(rot<1||rot>8) continue;
switch(rot)
{
case 1:xs=0 ;ys=0 ;xt=px+1;yt=py+1;xi= 1;yi= 1;break;
case 2:xs=px;ys=0 ;xt=-1 ;yt=py+1;xi=-1;yi= 1;break;
case 3:xs=0 ;ys=py;xt=px+1;yt=-1 ;xi= 1;yi=-1;break;
case 4:xs=px;ys=py;xt=-1 ;yt=-1 ;xi=-1;yi=-1;break;
case 5:xs=0 ;ys=0 ;xt=py+1;yt=px+1;xi= 1;yi= 1;break;
case 6:xs=0 ;ys=px;xt=py+1;yt=-1 ;xi= 1;yi=-1;break;
case 7:xs=py;ys=0 ;xt=-1 ;yt=px+1;xi=-1;yi= 1;break;
case 8:xs=py;ys=px;xt=-1 ;yt=-1 ;xi=-1;yi=-1;break;
}
for(j=ys;j!=yt;j=j+yi)
{
for(i=xs;i!=xt;i=i+xi)
if(rot<5)
printf("%c",Key(i,j));
else
printf("%c",Key(j,i));
printf("\n");
}
printf("\n");
}
return;
}