Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

OL Crossword puzzle server/client

by wombat (Curate)
on Aug 27, 2000 at 07:05 UTC ( [id://29848]=sourcecode: print w/replies, xml ) Need Help??
Category: Fun Stuff
Author/Contact Info Adam For writing the original table generating code.
wombat For form functionality.
Description: This is an improvement over Adam's crossword puzzle generator. Each cell now conatins a 1 character text field, allowing you to actually fill it in and submit your answers to a site. The processing script is straightforward and one can program any number of events to happen when someone solves a puzzle (or submits an incorrect answer) :-). The one in the example is the same puzzle that was written by KM here. Since he said that he would post the answers in a few days, I shall refrain from including the solution in the code.

Basically, in order to find the correct solution string to plug into the solution checker, you need to run each block's character together into one long string. It's ugly from a human standpoint, but it's easy to process. I hope to create a dynamic generator in the near future which would, from a list of words and corresponding clues automatically generate the grid, and thereby easily generate the solution string. Enjoy! ~W
The grid generator code:
#!/usr/bin/perl -w

use strict;
# I wrote this to generate a file, not be a cgi script, but you could.
# use;

open GRID, '>../html/grid.html' or die $!;
select GRID;

print "<HTML><BODY>\n";
print "<FORM method=GET action=>

my $cellwidth = '20';  # pixel or percent
my $cellheight = '4'; # pixels only
my $counter = 0;

sub Solid
    return "<TD WIDTH='$cellwidth' HEIGHT='$cellheight' ".

sub Open
    return "<TD WIDTH='$cellwidth' HEIGHT='$cellheight' ".
           "BGCOLOR='WHITE' VALIGN='BOTTOM'><input type=text size=1 na
+me='x' max

sub Numbered
    return "<TD WIDTH='$cellwidth' HEIGHT='$cellheight' BGCOLOR='WHITE
           "ALIGN='LEFT' VALIGN='TOP'><FONT SIZE=-2>$counter</FONT><in
+put type=t
ext size=1 name='x' maxlength=1></TD>\n";

# These two arrays are used to generate the grid.
# numbers in @line correspond to the functions in @type.
# 0 black box, 1, white box, 2, numbered box.
my @type = ( \&Solid, \&Open, \&Numbered );
my @line = (

print "<TABLE BORDER=1 SHADE=0>\n";
foreach ( @line )
    print "<TR>\n";
    print map { &{$type[$_]} } split //;
    print "</TR>";
print "\n</TABLE>";
print "<input type=submit value=\"I'd like to solve the puzzle please\
print "\n</form>";
print "</body></html>";

And the processing code:

#! /usr/bin/perl -w
require ("");


print "Content-type: text/html\n\n";

@my_query = split(/&/,$ENV{'QUERY_STRING'});

foreach (@my_query)
@key_value = split(/=/,$_);
push @solved, $key_value[1];

$solved_str = join('',@solved);

if ($solved_str eq "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwx

if ($success)
print << 'End_Of_Text';
<body bgcolor=#004400 text=ffffff>
<h3>Hooray!  You've solved the puzzle!</h3>
Congrats.  Go out, have a beer. Eat some salami.  
print << 'End_Of_Text';
<body bgcolor=#440000 text=ffffff>
<h3>Sorry, try again.</h3>
One of your answers is incorrect.  Click back and try again.
Replies are listed 'Best First'.
RE: OL Crossword puzzle server/client
by vroom (His Eminence) on Aug 27, 2000 at 08:01 UTC
    One idea that might be cool is if you were to select a naming convention for the parameters such as a1_1 for the first letter in 1 across for instance than you could show which clues the user had answered correctly/incorrectly.

    I really like the idea of being able to take the word galaxy generator to input a clue and then a word. Then Adam's table generator to pretty the output up and your text field functionality to test for correct answers. So anyone could input a set of clues and answers and then have a crossword puzzle and then be able to check whether users have entered correct answers.

    ok it's late and I haven't had nearly enough sleep lately. Hopefully some of that made sense. I really like to see group collaboration happening on this crossword puzzle idea.

    vroom | Tim Vroom |

Re: OL Crossword puzzle server/client
by OxYgEn (Acolyte) on Feb 29, 2004 at 19:06 UTC
    I'm sorry I'm very very extremely new at perl and I am wondering how exactly you use this? I've researched a few web languages including HTML and I understand all the HTML tags that i see in there, yet I don't know what to do...

    Thanks, Oxygen

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: sourcecode [id://29848]
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (1)
As of 2024-07-21 22:30 GMT
Find Nodes?
    Voting Booth?

    No recent polls found

    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.