Spiderwoman
Book: Creepy Computer Games
Author: Brendon Kavanagh, Colin Reynolds, Val Robinson, Alan Ramsey, Keith Campbell, Chris Oxlade
Translator: Marcus Medina
Story
Eek! It’s Spiderwoman! You’ve stumbled into her web, and she’s in a teasing mood. She has chosen a secret letter, and if you can guess it quickly enough, she might set you free.
To find out what letter she’s thinking of, you must give her a word. If your word contains her letter, she’ll tell you so — but if not, she’ll simply giggle and tighten the web. Take too many turns and you’ll transform into a fly, forever trapped in her silky trap.
Pseudocode
SET number_of_goes = 0CLEAR screenCHOOSE a random letter (A-Z)PRINT "SPIDERWOMAN HAS CHOSEN"
REPEAT UNTIL guessed OR 15 tries used ASK player for a word INCREASE number_of_goes IF word too short (<4) OR too long (>8), ask again
CHECK if the word contains the chosen letter IF yes: PRINT "YES – IT’S ONE OF THOSE" ASK if player wants to guess the letter IF yes: ASK for guess IF correct: PRINT "OK – YOU CAN GO" END game ELSE: PRINT "YOU ARE TOO LATE" END game ELSE: PRINT "IT’S NOT IN THAT WORD"
END LOOP
IF 15 tries used THEN PRINT "YOU ARE NOW A FLY"Flowchart
flowchart TD
A[Start Game] --> B[Choose random letter A-Z]
B --> C[Ask for a word]
C --> D[Increase guess counter]
D --> E[Check word length 4-8]
E -->|Invalid| C
E --> F[Does word contain the letter?]
F -->|No| G[Show not in that word]
G --> H[Delay and repeat]
F -->|Yes| I[Show yes, it is one of those]
I --> J[Ask if player wants to guess]
J -->|No| H
J -->|Yes| K[Ask for guess]
K --> L[Correct?]
L -->|Yes| M[Player escapes and game ends]
L -->|No| N[Player is too late and game ends]
H --> O["If more than 15 tries: You are now a fly"]
Code
Pages


ZX-81 BASIC
10 LET G=020 CLS30 LET T=INT(RND*26+38)40 LET T$=CHR$(T)50 PRINT "SPIDERWOMAN"60 PRINT "HAS CHOSEN"70 PRINT80 PRINT "TRY A WORD"90 PRINT100 INPUT W$110 LET G=G+1120 LET L=LEN(W$)130 IF L<4 OR L>8 THEN GOTO 70140 LET F=0160 FOR I=1 TO L170 LET A$=W$(I TO I)180 IF A$=T$ THEN LET F=1190 NEXT I200 IF F=1 THEN GOTO 280210 PRINT220 PRINT "IT'S NOT IN THAT WORD"230 FOR A=1 TO 20240 NEXT A250 IF G>15 THEN GOTO 400260 CLS270 GOTO 70280 PRINT "YES - IT'S ONE OF THOSE"290 PRINT300 PRINT "DO YOU WANT TO GUESS? (Y OR N)"310 INPUT R$320 IF R$="N" THEN GOTO 250330 PRINT "WHAT IS YOUR GUESS THEN?"350 INPUT G$360 IF G$<>T$ THEN GOTO 410370 PRINT "OK - YOU CAN GO"380 PRINT "(THIS TIME)"390 STOP400 PRINT "YOU ARE TOO LATE"410 PRINT "YOU ARE NOW A FLY"420 STOPC#
using System;
class Spiderwoman{ static void Main() { Random rnd = new Random(); char target = (char)('A' + rnd.Next(0, 26)); int tries = 0;
Console.WriteLine("SPIDERWOMAN HAS CHOSEN..."); Console.WriteLine("Try to find her letter!");
while (tries < 15) { Console.Write("\nEnter a word (4-8 letters): "); string word = Console.ReadLine()?.ToUpper() ?? ""; tries++;
if (word.Length < 4 || word.Length > 8) continue;
if (word.Contains(target)) { Console.WriteLine("Yes - it’s one of those!"); Console.Write("Do you want to guess the letter? (Y/N): "); var answer = Console.ReadKey(true).KeyChar; if (char.ToUpper(answer) == 'Y') { Console.Write("\nWhat’s your guess? "); var guess = Console.ReadKey(true).KeyChar; if (char.ToUpper(guess) == target) { Console.WriteLine("\nOK – you can go (this time)!"); return; } else { Console.WriteLine("\nYou are too late… You are now a fly!"); return; } } } else { Console.WriteLine("It's not in that word."); } }
Console.WriteLine("\nYou’ve taken too long... You are now a fly!"); }}Python
import random
def spiderwoman(): target = chr(random.randint(65, 90)) # A-Z tries = 0 print("SPIDERWOMAN HAS CHOSEN...") print("Try to find her letter!")
while tries < 15: word = input("\nEnter a word (4-8 letters): ").upper() tries += 1 if len(word) < 4 or len(word) > 8: continue
if target in word: print("Yes - it's one of those!") choice = input("Do you want to guess the letter? (Y/N): ").upper() if choice == "Y": guess = input("What’s your guess? ").upper() if guess == target: print("OK – you can go (this time)!") return else: print("You are too late... You are now a fly!") return else: print("It's not in that word.")
print("\nYou’ve taken too long... You are now a fly!")
if __name__ == "__main__": spiderwoman()Java
import java.util.Random;import java.util.Scanner;
public class Spiderwoman { public static void main(String[] args) { Random rnd = new Random(); char target = (char) ('A' + rnd.nextInt(26)); int tries = 0; Scanner scanner = new Scanner(System.in);
System.out.println("SPIDERWOMAN HAS CHOSEN..."); System.out.println("Try to find her letter!");
while (tries < 15) { System.out.print("\nEnter a word (4-8 letters): "); if (!scanner.hasNextLine()) return; String word = scanner.nextLine().toUpperCase(); tries++;
if (word.length() < 4 || word.length() > 8) continue;
if (word.indexOf(target) >= 0) { System.out.println("Yes - it's one of those!"); System.out.print("Do you want to guess the letter? (Y/N): "); if (!scanner.hasNextLine()) return; String choice = scanner.nextLine().trim().toUpperCase(); if (choice.equals("Y")) { System.out.print("What's your guess? "); if (!scanner.hasNextLine()) return; String guess = scanner.nextLine().trim().toUpperCase(); if (guess.length() == 1 && guess.charAt(0) == target) { System.out.println("OK - you can go (this time)!"); } else { System.out.println("You are too late... You are now a fly!"); } return; } } else { System.out.println("It's not in that word."); } }
System.out.println("\nYou've taken too long... You are now a fly!"); }}Go
package main
import ( "bufio" "fmt" "math/rand" "os" "strings" "time")
func main() { rand.Seed(time.Now().UnixNano()) target := byte('A' + rand.Intn(26)) tries := 0 reader := bufio.NewReader(os.Stdin)
fmt.Println("SPIDERWOMAN HAS CHOSEN...") fmt.Println("Try to find her letter!")
for tries < 15 { fmt.Print("\nEnter a word (4-8 letters): ") line, err := reader.ReadString('\n') if err != nil { return } word := strings.ToUpper(strings.TrimSpace(line)) tries++
if len(word) < 4 || len(word) > 8 { continue }
if strings.IndexByte(word, target) >= 0 { fmt.Println("Yes - it's one of those!") fmt.Print("Do you want to guess the letter? (Y/N): ") line, err = reader.ReadString('\n') if err != nil { return } choice := strings.ToUpper(strings.TrimSpace(line)) if choice == "Y" { fmt.Print("What's your guess? ") line, err = reader.ReadString('\n') if err != nil { return } guess := strings.ToUpper(strings.TrimSpace(line)) if len(guess) == 1 && guess[0] == target { fmt.Println("OK - you can go (this time)!") } else { fmt.Println("You are too late... You are now a fly!") } return } } else { fmt.Println("It's not in that word.") } }
fmt.Println("\nYou've taken too long... You are now a fly!")}C++
#include <iostream>#include <string>#include <cstdlib>#include <ctime>#include <algorithm>
int main() { srand(time(0)); char target = 'A' + rand() % 26; int tries = 0;
std::cout << "SPIDERWOMAN HAS CHOSEN..." << std::endl; std::cout << "Try to find her letter!" << std::endl;
while (tries < 15) { std::cout << "\nEnter a word (4-8 letters): "; std::string word; if (!std::getline(std::cin, word)) return 0; std::transform(word.begin(), word.end(), word.begin(), ::toupper); tries++;
if (word.length() < 4 || word.length() > 8) continue;
if (word.find(target) != std::string::npos) { std::cout << "Yes - it's one of those!" << std::endl; std::cout << "Do you want to guess the letter? (Y/N): "; std::string choice; if (!std::getline(std::cin, choice)) return 0; std::transform(choice.begin(), choice.end(), choice.begin(), ::toupper); if (choice == "Y") { std::cout << "What's your guess? "; std::string guess; if (!std::getline(std::cin, guess)) return 0; std::transform(guess.begin(), guess.end(), guess.begin(), ::toupper); if (guess.length() == 1 && guess[0] == target) { std::cout << "OK - you can go (this time)!" << std::endl; } else { std::cout << "You are too late... You are now a fly!" << std::endl; } return 0; } } else { std::cout << "It's not in that word." << std::endl; } }
std::cout << "\nYou've taken too long... You are now a fly!" << std::endl; return 0;}Explanation
Spiderwoman secretly picks a random letter from A-Z. Each turn, you type in a word — if her letter appears within it, she’ll admit it. You can then decide to make a final guess. Get it right, and she lets you go. Get it wrong, and she wraps you in silk forever.
Challenges
- Double Chance Rule – Allow two guesses if the letter is in your word, but lose five turns if wrong.
- Spiderweb Timer – Add a countdown that shortens with every failed guess.
- Hint System – Let Spiderwoman reveal whether her letter is before or after the first letter of your word.
- Sound & Color – Add eerie effects for success and failure.
- Word Trap Mode – If you repeat a word, she automatically wins!
Copyright
These programs are adaptations of the original Usborne Computer Guides published in the 1980s. The books are free to download for personal or educational use from Usborne’s Computer and Coding Books. Programs and adaptations may not be used for commercial purposes.
Return to Creepy Computer Games.