"Initial" commit. Move to tbuild build system.
Signed-off-by: Slendi <slendi@socopon.com>
This commit is contained in:
commit
7baec828c4
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
build
|
||||
output
|
27
LICENSE.md
Normal file
27
LICENSE.md
Normal file
@ -0,0 +1,27 @@
|
||||
# DON'T BE A DICK PUBLIC LICENSE
|
||||
|
||||
> Version 1.1, December 2016
|
||||
|
||||
> Copyright (C) 2022 Slendi <slendi@socopon.com>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document.
|
||||
|
||||
> DON'T BE A DICK PUBLIC LICENSE
|
||||
> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
1. Do whatever you like with the original work, just don't be a dick.
|
||||
|
||||
Being a dick includes - but is not limited to - the following instances:
|
||||
|
||||
1a. Outright copyright infringement - Don't just copy this and change the name.
|
||||
1b. Selling the unmodified original with no work done what-so-ever, that's REALLY being a dick.
|
||||
1c. Modifying the original work to contain hidden harmful content. That would make you a PROPER dick.
|
||||
|
||||
2. If you become rich through modifications, related works/services, or supporting the original work,
|
||||
share the love. Only a dick would make loads off this work and not buy the original work's
|
||||
creator(s) a pint.
|
||||
|
||||
3. Code is provided with no warranty. Using somebody else's code and bitching when it goes wrong makes
|
||||
you a DONKEY dick. Fix the problem yourself. A non-dick would submit the fix back.
|
||||
|
16
README.md
Normal file
16
README.md
Normal file
@ -0,0 +1,16 @@
|
||||
TempleOS Wordle
|
||||
===============
|
||||
|
||||
What's this?
|
||||
------------
|
||||
|
||||
This is a TempleOS and ZealOS exclusive guessing game.
|
||||
|
||||
Where do I get this from?
|
||||
-------------------------
|
||||
You can download one of the latest releases from (here)[https://git.templeos.me/slendi/wordletos/releases] or you can build it yourself using (tbuilld)[https://git.templeos.me/slendi/tbuild].
|
||||
|
||||
LICENSE
|
||||
-------
|
||||
|
||||
This software is licensed under the DBAD license. Click [here](LICENSE.md) for more details.
|
39
src/HolyC.HC
Normal file
39
src/HolyC.HC
Normal file
@ -0,0 +1,39 @@
|
||||
// This file contains utility functions
|
||||
|
||||
U0 GrChar(CDC *dc=gr.dc, U8 ch, I64 x, I64 y, I64 scale=1)
|
||||
{
|
||||
I64 i,j,k=0;
|
||||
for (i=0; i<FONT_HEIGHT; i++) {
|
||||
for (j=0; j<FONT_WIDTH; j++) {
|
||||
if (Bt(&text.font[ch],k++)) {
|
||||
GrRect(dc, x+j*scale, y+i*scale, scale, scale);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
U0 GrRndRect(CDC *dc=gr.dc, I64 x, I64 y, I64 w, I64 h, I64 rad)
|
||||
{ // Draw a rounded rectangle, rad is the radius
|
||||
GrFillCircle(dc, x, y, , rad*2);
|
||||
GrFillCircle(dc, x+w, y, , rad*2);
|
||||
GrFillCircle(dc, x, y+h,, rad*2);
|
||||
GrFillCircle(dc, x+w, y+h,, rad*2);
|
||||
GrRect(dc, x, y-rad, w, h+(rad*2));
|
||||
GrRect(dc, x-rad, y, w+(rad*2), h);
|
||||
}
|
||||
|
||||
I64 RandRng(I64 min=0, I64 max)
|
||||
{
|
||||
return min+(Rand() * (max-min-1));
|
||||
}
|
||||
|
||||
Bool U8InStr(U8 ch, U8 *str)
|
||||
{
|
||||
I64 i;
|
||||
for (i=0; i<StrLen(str); i++) {
|
||||
if (ch == str[i]) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
8
src/Install.HC
Normal file
8
src/Install.HC
Normal file
@ -0,0 +1,8 @@
|
||||
// TODO: Add support for multiple partitions, not just C:
|
||||
if (!FileFind("C:/Apps/Wordle",,FUF_JUST_DIRS)) {
|
||||
"Installing...\n";
|
||||
DirMk("C:/Apps/Wordle");
|
||||
} else "Updating...\n";
|
||||
CopyTree("T:/", "C:/Apps/Wordle");
|
||||
Del("C:/Apps/Wordle/RunCD.*");
|
||||
"Done!\n";
|
6
src/Load.HC
Normal file
6
src/Load.HC
Normal file
@ -0,0 +1,6 @@
|
||||
#help_index "Games"
|
||||
|
||||
Cd(__DIR__);;
|
||||
#include "Wordle"
|
||||
|
||||
#help_index ""
|
19
src/Palette.HC
Normal file
19
src/Palette.HC
Normal file
@ -0,0 +1,19 @@
|
||||
U0 WordleDark()
|
||||
{
|
||||
GrPaletteColorSet(WHITE, 0x222222222222);
|
||||
GrPaletteColorSet(BLACK, 0xffffffffffff);
|
||||
GrPaletteColorSet(LTGRAY, 0x3a3a3a3a3a3a);
|
||||
GrPaletteColorSet(BLUE, 0x0f0f0f0f0f0f);
|
||||
GrPaletteColorSet(GREEN, 0x000061610a0a);
|
||||
GrPaletteColorSet(YELLOW, 0x91916f6f0000);
|
||||
}
|
||||
|
||||
U0 WordleLight()
|
||||
{
|
||||
GrPaletteColorSet(WHITE, 0xffffffffffff);
|
||||
GrPaletteColorSet(BLACK, 0x222222222222);
|
||||
GrPaletteColorSet(LTGRAY, 0xc0c0c0c0c0c0);
|
||||
GrPaletteColorSet(BLUE, 0xe3e3e3e3e3e3);
|
||||
GrPaletteColorSet(GREEN, 0x8383ffff7d7d);
|
||||
GrPaletteColorSet(YELLOW, 0xfffff2f27d7d);
|
||||
}
|
24
src/PaletteZeal.ZC
Normal file
24
src/PaletteZeal.ZC
Normal file
@ -0,0 +1,24 @@
|
||||
U0 GrPaletteColorSet(I32 idx, CBGR24 col)
|
||||
{
|
||||
gr_palette[idx] = col;
|
||||
}
|
||||
|
||||
U0 WordleDark()
|
||||
{
|
||||
GrPaletteColorSet(WHITE, 0x222222);
|
||||
GrPaletteColorSet(BLACK, 0xffffff);
|
||||
GrPaletteColorSet(LTGRAY, 0x3a3a3a);
|
||||
GrPaletteColorSet(BLUE, 0x0f0f0f);
|
||||
GrPaletteColorSet(GREEN, 0x00610a);
|
||||
GrPaletteColorSet(YELLOW, 0x916f00);
|
||||
}
|
||||
|
||||
U0 WordleLight()
|
||||
{
|
||||
GrPaletteColorSet(WHITE, 0xffffff);
|
||||
GrPaletteColorSet(BLACK, 0x222222);
|
||||
GrPaletteColorSet(LTGRAY, 0xc0c0c0);
|
||||
GrPaletteColorSet(BLUE, 0xe3e3e3);
|
||||
GrPaletteColorSet(GREEN, 0x83ff7d);
|
||||
GrPaletteColorSet(YELLOW, 0xfff27d);
|
||||
}
|
4
src/Run.HC
Normal file
4
src/Run.HC
Normal file
@ -0,0 +1,4 @@
|
||||
Cd(__DIR__);;
|
||||
#include "Load"
|
||||
"Running...\n";
|
||||
Wordle;
|
3
src/RunCD.HC
Normal file
3
src/RunCD.HC
Normal file
@ -0,0 +1,3 @@
|
||||
#include "Wordle"
|
||||
"Running from CD...\n";
|
||||
Wordle;
|
875
src/Vocab.TXT
Normal file
875
src/Vocab.TXT
Normal file
@ -0,0 +1,875 @@
|
||||
abase
|
||||
abhor
|
||||
abide
|
||||
abler
|
||||
abode
|
||||
about
|
||||
above
|
||||
abuse
|
||||
abyss
|
||||
aches
|
||||
acted
|
||||
actor
|
||||
acute
|
||||
adapt
|
||||
added
|
||||
admit
|
||||
afric
|
||||
after
|
||||
again
|
||||
agito
|
||||
agony
|
||||
agree
|
||||
ahead
|
||||
aided
|
||||
alike
|
||||
alive
|
||||
allay
|
||||
allow
|
||||
alloy
|
||||
aloft
|
||||
alone
|
||||
along
|
||||
aloud
|
||||
altar
|
||||
alter
|
||||
amend
|
||||
amiss
|
||||
among
|
||||
ample
|
||||
angel
|
||||
anger
|
||||
angry
|
||||
apart
|
||||
apply
|
||||
aptly
|
||||
arise
|
||||
armed
|
||||
arose
|
||||
array
|
||||
ascii
|
||||
ashes
|
||||
aside
|
||||
asked
|
||||
aught
|
||||
avail
|
||||
avert
|
||||
avoid
|
||||
awake
|
||||
aware
|
||||
awful
|
||||
awoke
|
||||
babes
|
||||
backs
|
||||
badge
|
||||
balls
|
||||
bands
|
||||
bared
|
||||
based
|
||||
bathe
|
||||
baths
|
||||
beams
|
||||
bears
|
||||
beast
|
||||
began
|
||||
begat
|
||||
beget
|
||||
begin
|
||||
begun
|
||||
being
|
||||
belly
|
||||
below
|
||||
bends
|
||||
beset
|
||||
bible
|
||||
birds
|
||||
birth
|
||||
black
|
||||
blade
|
||||
blame
|
||||
bless
|
||||
blest
|
||||
blind
|
||||
blood
|
||||
bloom
|
||||
blunt
|
||||
blush
|
||||
boast
|
||||
boils
|
||||
bonds
|
||||
bones
|
||||
books
|
||||
borne
|
||||
bosom
|
||||
bound
|
||||
bowed
|
||||
brain
|
||||
bread
|
||||
break
|
||||
bribe
|
||||
bride
|
||||
bring
|
||||
broad
|
||||
broke
|
||||
brows
|
||||
brute
|
||||
built
|
||||
bulky
|
||||
burnt
|
||||
burst
|
||||
cakes
|
||||
calls
|
||||
canst
|
||||
cared
|
||||
cares
|
||||
carry
|
||||
cases
|
||||
casts
|
||||
catch
|
||||
cause
|
||||
caves
|
||||
cease
|
||||
chain
|
||||
chair
|
||||
chant
|
||||
cheap
|
||||
check
|
||||
cheer
|
||||
chest
|
||||
chief
|
||||
child
|
||||
chill
|
||||
chose
|
||||
claim
|
||||
clasp
|
||||
class
|
||||
clave
|
||||
clean
|
||||
clear
|
||||
climb
|
||||
cloak
|
||||
close
|
||||
cloud
|
||||
coals
|
||||
coats
|
||||
codes
|
||||
comes
|
||||
costs
|
||||
couch
|
||||
could
|
||||
count
|
||||
court
|
||||
cover
|
||||
cower
|
||||
creep
|
||||
crept
|
||||
cried
|
||||
cries
|
||||
crime
|
||||
cross
|
||||
crown
|
||||
cruel
|
||||
cubit
|
||||
cured
|
||||
daily
|
||||
danae
|
||||
dared
|
||||
dares
|
||||
dates
|
||||
david
|
||||
dealt
|
||||
death
|
||||
debts
|
||||
decay
|
||||
deeds
|
||||
deeps
|
||||
deity
|
||||
delay
|
||||
depth
|
||||
devil
|
||||
didst
|
||||
dieth
|
||||
doest
|
||||
doing
|
||||
doors
|
||||
doted
|
||||
doubt
|
||||
drank
|
||||
drawn
|
||||
draws
|
||||
dread
|
||||
dream
|
||||
dried
|
||||
drink
|
||||
drive
|
||||
drops
|
||||
drove
|
||||
drunk
|
||||
dully
|
||||
durst
|
||||
dwell
|
||||
dwelt
|
||||
dying
|
||||
eager
|
||||
eagle
|
||||
early
|
||||
earth
|
||||
eased
|
||||
eaten
|
||||
edged
|
||||
edify
|
||||
egypt
|
||||
eight
|
||||
elder
|
||||
elect
|
||||
email
|
||||
empty
|
||||
enact
|
||||
ended
|
||||
enemy
|
||||
enjoy
|
||||
enter
|
||||
equal
|
||||
erred
|
||||
error
|
||||
essay
|
||||
etext
|
||||
every
|
||||
evils
|
||||
exact
|
||||
excel
|
||||
exist
|
||||
extol
|
||||
exude
|
||||
exult
|
||||
fable
|
||||
faced
|
||||
faces
|
||||
facio
|
||||
facts
|
||||
faint
|
||||
faith
|
||||
falls
|
||||
false
|
||||
fancy
|
||||
fared
|
||||
fault
|
||||
fears
|
||||
feast
|
||||
feeds
|
||||
feels
|
||||
fence
|
||||
fever
|
||||
field
|
||||
fifth
|
||||
fifty
|
||||
fight
|
||||
files
|
||||
filth
|
||||
final
|
||||
finds
|
||||
fired
|
||||
fires
|
||||
first
|
||||
fixed
|
||||
flame
|
||||
flash
|
||||
flesh
|
||||
flies
|
||||
fling
|
||||
flock
|
||||
flood
|
||||
flour
|
||||
flown
|
||||
flows
|
||||
flung
|
||||
folks
|
||||
folly
|
||||
fools
|
||||
force
|
||||
forge
|
||||
forms
|
||||
forth
|
||||
forum
|
||||
fouls
|
||||
found
|
||||
fowls
|
||||
frame
|
||||
fraud
|
||||
freed
|
||||
fresh
|
||||
front
|
||||
fruit
|
||||
fully
|
||||
fumed
|
||||
fumes
|
||||
gains
|
||||
gales
|
||||
games
|
||||
gates
|
||||
ghost
|
||||
giant
|
||||
gifts
|
||||
girls
|
||||
given
|
||||
giver
|
||||
gives
|
||||
glass
|
||||
gleam
|
||||
glide
|
||||
glory
|
||||
glows
|
||||
goads
|
||||
godly
|
||||
goest
|
||||
goeth
|
||||
going
|
||||
goods
|
||||
grace
|
||||
grant
|
||||
grasp
|
||||
grass
|
||||
grave
|
||||
great
|
||||
greek
|
||||
green
|
||||
greet
|
||||
grief
|
||||
groan
|
||||
groat
|
||||
gross
|
||||
grown
|
||||
guess
|
||||
guide
|
||||
guilt
|
||||
habit
|
||||
hadst
|
||||
hairs
|
||||
haled
|
||||
hands
|
||||
haply
|
||||
happy
|
||||
harsh
|
||||
harts
|
||||
haste
|
||||
hated
|
||||
haunt
|
||||
heads
|
||||
heaps
|
||||
heard
|
||||
hears
|
||||
heart
|
||||
heavy
|
||||
hence
|
||||
herbs
|
||||
hills
|
||||
holds
|
||||
homer
|
||||
honey
|
||||
honor
|
||||
hooks
|
||||
hoped
|
||||
hopes
|
||||
horns
|
||||
horse
|
||||
hosts
|
||||
hotly
|
||||
hours
|
||||
house
|
||||
human
|
||||
husks
|
||||
hymns
|
||||
idaho
|
||||
ideas
|
||||
idols
|
||||
image
|
||||
imbue
|
||||
imply
|
||||
infer
|
||||
inner
|
||||
irons
|
||||
isaac
|
||||
issue
|
||||
italy
|
||||
items
|
||||
jacob
|
||||
jests
|
||||
jesus
|
||||
joint
|
||||
joyed
|
||||
judge
|
||||
keeps
|
||||
kinds
|
||||
kings
|
||||
knees
|
||||
knock
|
||||
knots
|
||||
known
|
||||
knows
|
||||
laden
|
||||
lands
|
||||
large
|
||||
later
|
||||
lathe
|
||||
latin
|
||||
laugh
|
||||
laxly
|
||||
leads
|
||||
leaps
|
||||
learn
|
||||
least
|
||||
leave
|
||||
legal
|
||||
lends
|
||||
lieth
|
||||
lifts
|
||||
light
|
||||
liked
|
||||
liker
|
||||
likes
|
||||
limbs
|
||||
limed
|
||||
lined
|
||||
lines
|
||||
links
|
||||
lists
|
||||
lived
|
||||
lives
|
||||
loads
|
||||
lofty
|
||||
logic
|
||||
login
|
||||
longs
|
||||
looks
|
||||
loose
|
||||
lords
|
||||
loses
|
||||
loved
|
||||
lover
|
||||
loves
|
||||
lower
|
||||
lowly
|
||||
lucid
|
||||
lucre
|
||||
lungs
|
||||
lures
|
||||
lusts
|
||||
lying
|
||||
madly
|
||||
maker
|
||||
makes
|
||||
manna
|
||||
marks
|
||||
marry
|
||||
marts
|
||||
mazes
|
||||
means
|
||||
meant
|
||||
meats
|
||||
medea
|
||||
meets
|
||||
mercy
|
||||
merry
|
||||
metre
|
||||
might
|
||||
milan
|
||||
milky
|
||||
mimic
|
||||
minds
|
||||
mirth
|
||||
mists
|
||||
modes
|
||||
moist
|
||||
monad
|
||||
money
|
||||
month
|
||||
moral
|
||||
moses
|
||||
mould
|
||||
mount
|
||||
mourn
|
||||
mouth
|
||||
moved
|
||||
muddy
|
||||
music
|
||||
nails
|
||||
naked
|
||||
named
|
||||
names
|
||||
needs
|
||||
needy
|
||||
nests
|
||||
never
|
||||
night
|
||||
ninth
|
||||
noble
|
||||
noise
|
||||
north
|
||||
noted
|
||||
notes
|
||||
nurse
|
||||
obeys
|
||||
occur
|
||||
ocean
|
||||
odour
|
||||
offer
|
||||
often
|
||||
ofthe
|
||||
opens
|
||||
order
|
||||
ostia
|
||||
other
|
||||
ought
|
||||
outer
|
||||
owing
|
||||
pages
|
||||
pains
|
||||
pairs
|
||||
pangs
|
||||
paper
|
||||
pared
|
||||
parts
|
||||
party
|
||||
paths
|
||||
pause
|
||||
peace
|
||||
pearl
|
||||
pears
|
||||
penal
|
||||
pence
|
||||
peril
|
||||
petty
|
||||
piece
|
||||
piety
|
||||
piled
|
||||
pines
|
||||
pious
|
||||
pitch
|
||||
place
|
||||
plain
|
||||
plans
|
||||
plant
|
||||
plays
|
||||
plead
|
||||
plots
|
||||
pluck
|
||||
poems
|
||||
poesy
|
||||
poets
|
||||
point
|
||||
poise
|
||||
power
|
||||
press
|
||||
price
|
||||
pride
|
||||
print
|
||||
prior
|
||||
prize
|
||||
promo
|
||||
proof
|
||||
prose
|
||||
proud
|
||||
prove
|
||||
psalm
|
||||
pulse
|
||||
purer
|
||||
pusey
|
||||
queen
|
||||
quest
|
||||
quick
|
||||
quiet
|
||||
quite
|
||||
quoth
|
||||
races
|
||||
racks
|
||||
raged
|
||||
raise
|
||||
range
|
||||
rates
|
||||
raven
|
||||
reach
|
||||
reads
|
||||
ready
|
||||
rebel
|
||||
recur
|
||||
refer
|
||||
reins
|
||||
renew
|
||||
repay
|
||||
repel
|
||||
reply
|
||||
right
|
||||
riper
|
||||
risen
|
||||
rites
|
||||
rocks
|
||||
roman
|
||||
rough
|
||||
round
|
||||
rouse
|
||||
ruled
|
||||
ruler
|
||||
rules
|
||||
safer
|
||||
sails
|
||||
saint
|
||||
saith
|
||||
sakes
|
||||
sated
|
||||
saved
|
||||
scorn
|
||||
seats
|
||||
seeks
|
||||
seems
|
||||
seest
|
||||
seeth
|
||||
seize
|
||||
sense
|
||||
serve
|
||||
seven
|
||||
sever
|
||||
shade
|
||||
shady
|
||||
shake
|
||||
shall
|
||||
shalt
|
||||
shame
|
||||
shape
|
||||
share
|
||||
sharp
|
||||
sheep
|
||||
shine
|
||||
ships
|
||||
shoes
|
||||
shone
|
||||
shook
|
||||
shoot
|
||||
shops
|
||||
shore
|
||||
short
|
||||
shown
|
||||
shows
|
||||
shuns
|
||||
sides
|
||||
siege
|
||||
sighs
|
||||
sight
|
||||
signs
|
||||
silly
|
||||
since
|
||||
sings
|
||||
sinks
|
||||
sites
|
||||
sixth
|
||||
skies
|
||||
skill
|
||||
skins
|
||||
slain
|
||||
slave
|
||||
sleep
|
||||
slept
|
||||
sloth
|
||||
small
|
||||
smell
|
||||
smile
|
||||
smoke
|
||||
snare
|
||||
sober
|
||||
sodom
|
||||
solid
|
||||
solve
|
||||
songs
|
||||
sores
|
||||
sorry
|
||||
sorts
|
||||
souls
|
||||
sound
|
||||
south
|
||||
space
|
||||
spake
|
||||
spare
|
||||
speak
|
||||
speed
|
||||
spend
|
||||
spent
|
||||
spoil
|
||||
spoke
|
||||
sport
|
||||
spots
|
||||
spurn
|
||||
staff
|
||||
stage
|
||||
stand
|
||||
stank
|
||||
stars
|
||||
start
|
||||
state
|
||||
stays
|
||||
stead
|
||||
steal
|
||||
steep
|
||||
steer
|
||||
steps
|
||||
stick
|
||||
stiff
|
||||
still
|
||||
stole
|
||||
stone
|
||||
stood
|
||||
stoop
|
||||
store
|
||||
storm
|
||||
story
|
||||
stuck
|
||||
study
|
||||
stuff
|
||||
stung
|
||||
style
|
||||
subdu
|
||||
sweat
|
||||
sweet
|
||||
swept
|
||||
swift
|
||||
swine
|
||||
swoon
|
||||
sword
|
||||
table
|
||||
taken
|
||||
takes
|
||||
tales
|
||||
tamed
|
||||
tamer
|
||||
tardy
|
||||
taste
|
||||
taunt
|
||||
taxes
|
||||
teach
|
||||
tears
|
||||
teeth
|
||||
tells
|
||||
tempt
|
||||
tends
|
||||
tenet
|
||||
tenor
|
||||
terms
|
||||
texas
|
||||
texts
|
||||
thank
|
||||
theft
|
||||
their
|
||||
there
|
||||
these
|
||||
thick
|
||||
thief
|
||||
thine
|
||||
thing
|
||||
think
|
||||
third
|
||||
those
|
||||
three
|
||||
tides
|
||||
tilde
|
||||
times
|
||||
tired
|
||||
title
|
||||
token
|
||||
tones
|
||||
total
|
||||
touch
|
||||
tower
|
||||
trace
|
||||
track
|
||||
trade
|
||||
tread
|
||||
treat
|
||||
trees
|
||||
trial
|
||||
tried
|
||||
trine
|
||||
troop
|
||||
truer
|
||||
truly
|
||||
trust
|
||||
truth
|
||||
tully
|
||||
turns
|
||||
tutor
|
||||
twice
|
||||
twins
|
||||
under
|
||||
undid
|
||||
union
|
||||
unity
|
||||
until
|
||||
upper
|
||||
urged
|
||||
usage
|
||||
users
|
||||
useth
|
||||
using
|
||||
usual
|
||||
usury
|
||||
utter
|
||||
value
|
||||
vaunt
|
||||
venus
|
||||
verse
|
||||
vexed
|
||||
vices
|
||||
villa
|
||||
viper
|
||||
virus
|
||||
vital
|
||||
vivid
|
||||
vocal
|
||||
voice
|
||||
vowed
|
||||
waged
|
||||
wages
|
||||
walks
|
||||
walls
|
||||
wants
|
||||
waste
|
||||
watch
|
||||
water
|
||||
waver
|
||||
waves
|
||||
weary
|
||||
weeps
|
||||
weigh
|
||||
wheat
|
||||
wheel
|
||||
where
|
||||
which
|
||||
while
|
||||
white
|
||||
whole
|
||||
whose
|
||||
whoso
|
||||
widow
|
||||
wills
|
||||
winds
|
||||
windy
|
||||
wings
|
||||
wiser
|
||||
wives
|
||||
woman
|
||||
women
|
||||
wooed
|
||||
words
|
||||
wordy
|
||||
works
|
||||
world
|
||||
worse
|
||||
would
|
||||
wound
|
||||
wrath
|
||||
wring
|
||||
write
|
||||
wrong
|
||||
wrote
|
||||
wroth
|
||||
years
|
||||
yield
|
||||
young
|
||||
youth
|
330
src/Wordle.HC
Normal file
330
src/Wordle.HC
Normal file
@ -0,0 +1,330 @@
|
||||
// I use () for empty functions because I want syntax highlighting on GitHub and my code editor.
|
||||
// The Generate.ps1 script does a quick search and replace to remove those.
|
||||
|
||||
#include "HolyC"
|
||||
#include "Palette"
|
||||
|
||||
U8 *version = "v1.0.0";
|
||||
|
||||
"Wordle by xSlendiX - %s\n", version;
|
||||
|
||||
"Defines ";
|
||||
|
||||
#define LT_EMP 0
|
||||
#define LT_OK 1
|
||||
#define LT_POS 2
|
||||
#define LT_SEL 3
|
||||
|
||||
#define LT_SZ (20)
|
||||
#define LT_RAD (10)
|
||||
|
||||
#define LT_CX ((LT_SZ+(LT_RAD*2))/2)
|
||||
#define LT_CY ((LT_SZ+(LT_RAD*2))/2)
|
||||
|
||||
#define LT_FSCALE (3)
|
||||
#define LT_OFFX (-1)
|
||||
#define LT_OFFY (0)
|
||||
#define LT_FHALF (LT_FSCALE/2)
|
||||
|
||||
#define LT_SPACING (2)
|
||||
|
||||
#define WDEPTH 5
|
||||
#define WLEN 5
|
||||
|
||||
#define W_NONE 0
|
||||
#define W_WIN 1
|
||||
#define W_FAIL 2
|
||||
|
||||
#define DIALOGW (FONT_WIDTH*30)
|
||||
#define DIALOGH (FONT_HEIGHT*7)
|
||||
|
||||
"Vars ";
|
||||
U8 **wwords = NULL;
|
||||
I64 wcnt = 0;
|
||||
|
||||
U8 *gameTable = NULL;
|
||||
U8 *word;
|
||||
I64 win=W_NONE;
|
||||
I64 cdepth=0;
|
||||
I64 gcheats=OFF;
|
||||
|
||||
U8 wdark=ON;
|
||||
//#include "Settings"
|
||||
|
||||
"Funcs ";
|
||||
// Adapted from GodInit
|
||||
I64 WordInit(U8 *file="Vocab.TXT")
|
||||
{
|
||||
I64 i,ch,count;
|
||||
U8 *buf,*ptr,*ptr2;
|
||||
|
||||
i=0;
|
||||
if (buf=ptr=FileRead(file)) {
|
||||
while (*ptr) {
|
||||
while (*ptr && !Bt(char_bmp_word,*ptr))
|
||||
ptr++;
|
||||
|
||||
if (*ptr) {
|
||||
while (*ptr && Bt(char_bmp_word,*ptr))
|
||||
ptr++;
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
Free(buf);
|
||||
}
|
||||
|
||||
count=i;
|
||||
wwords=MAlloc(count*sizeof(U8 *));
|
||||
|
||||
i=0;
|
||||
if (buf=ptr=FileRead(file)) {
|
||||
while (*ptr) {
|
||||
while (*ptr && !Bt(char_bmp_word,*ptr))
|
||||
ptr++;
|
||||
|
||||
if (*ptr) {
|
||||
ptr2=ptr;
|
||||
while (*ptr && Bt(char_bmp_word,*ptr))
|
||||
ptr++;
|
||||
ch=*ptr;
|
||||
*ptr=0;
|
||||
wwords[i]=StrNew(ptr2);
|
||||
i++;
|
||||
*ptr=ch;
|
||||
}
|
||||
}
|
||||
Free(buf);
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
U0 DrawLetter(CDC *dc=gr.dc, U8 ch, I64 type, I64 x, I64 y)
|
||||
{
|
||||
I64 pcol=dc->color;
|
||||
|
||||
switch(type) {
|
||||
case LT_OK: dc->color = GREEN; break;
|
||||
case LT_POS: dc->color = YELLOW; break;
|
||||
case LT_SEL: dc->color = BLUE; break;
|
||||
case LT_EMP:
|
||||
default: dc->color = LTGRAY;
|
||||
}
|
||||
|
||||
GrRndRect(dc, LT_RAD+x, LT_RAD+y, LT_SZ, LT_SZ, LT_RAD);
|
||||
|
||||
dc->color=BLACK;
|
||||
|
||||
// FIXME: Buggy, needs better math
|
||||
GrChar(dc, ch, x+LT_OFFX+(LT_CX-LT_FHALF)/2, y+LT_OFFY+(LT_CY-LT_FHALF)/2, LT_FSCALE);
|
||||
|
||||
dc->color=pcol;
|
||||
}
|
||||
|
||||
U0 DrawWin(CDC *dc)
|
||||
{
|
||||
if (win == W_NONE) return;
|
||||
|
||||
I64 pcol=dc->color;
|
||||
|
||||
dc->color=BLACK;
|
||||
GrRndRect(dc, dc->width/2-DIALOGW/2, dc->height/2-DIALOGH/2,
|
||||
DIALOGW, DIALOGH, FONT_WIDTH);
|
||||
dc->color=WHITE;
|
||||
GrRndRect(dc, dc->width/2-DIALOGW/2, dc->height/2-DIALOGH/2,
|
||||
DIALOGW, DIALOGH, FONT_WIDTH/2);
|
||||
|
||||
switch (win)
|
||||
{
|
||||
case W_WIN:
|
||||
dc->color=GREEN;
|
||||
GrPrint(dc, dc->width/2-4*FONT_WIDTH, dc->height/2-FONT_HEIGHT/2-FONT_HEIGHT, "You win!");
|
||||
break;
|
||||
case W_FAIL:
|
||||
dc->color=RED;
|
||||
GrPrint(dc, dc->width/2-4.5*FONT_WIDTH, dc->height/2-FONT_HEIGHT/2-FONT_HEIGHT, "You lose!");
|
||||
break;
|
||||
}
|
||||
|
||||
dc->color=BLACK;
|
||||
GrPrint(dc, dc->width/2-13*FONT_WIDTH, dc->height/2-FONT_HEIGHT/2+FONT_HEIGHT, "Press ENTER to play again!");
|
||||
|
||||
dc->color=pcol;
|
||||
}
|
||||
|
||||
U0 DrawTable(CDC *dc=gr.dc)
|
||||
{
|
||||
I64 i,j;
|
||||
I64 type;
|
||||
U8 ch;
|
||||
|
||||
I64 w=(LT_SZ+LT_RAD*2+LT_SPACING)*WLEN;
|
||||
I64 h=(LT_SZ+LT_RAD*2+LT_SPACING)*WDEPTH;
|
||||
I64 offx=dc->width/2-w/2;
|
||||
I64 offy=dc->height/2-h/2;
|
||||
|
||||
for (i=0; i<WDEPTH; i++) {
|
||||
for (j=0; j<WLEN; j++) {
|
||||
ch=gameTable[j+WLEN*i];
|
||||
type=LT_EMP;
|
||||
if (cdepth <= i) {
|
||||
type=LT_SEL;
|
||||
goto draw_table_next;
|
||||
}
|
||||
|
||||
if (ch == word[j]) {
|
||||
type=LT_OK;
|
||||
goto draw_table_next;
|
||||
}
|
||||
|
||||
if (U8InStr(ch, word)) {
|
||||
type=LT_POS;
|
||||
goto draw_table_next;
|
||||
}
|
||||
draw_table_next:
|
||||
DrawLetter(dc, ch, type, j*(LT_SZ+LT_SPACING+LT_RAD*2)+offx, i*(LT_SZ+LT_SPACING+LT_RAD*2)+offy);
|
||||
}
|
||||
|
||||
if (cdepth == i && win == W_NONE)
|
||||
GrArrow3(dc, w+LT_RAD*2+offx, LT_CY+(LT_SZ+LT_SPACING+LT_RAD*2)*i+offy, 0, w+LT_RAD+offx, LT_CY+(LT_SZ+LT_SPACING+LT_RAD*2)*i+offy, 0);
|
||||
}
|
||||
}
|
||||
|
||||
I64 CheckWin()
|
||||
{
|
||||
if (cdepth == 0) return W_NONE;
|
||||
if (StrCmp(gameTable+(cdepth-1)*WLEN, word) == 0) return W_WIN;
|
||||
if (cdepth == WDEPTH) return W_FAIL;
|
||||
return W_NONE;
|
||||
}
|
||||
|
||||
U0 WordleDrawIt(CTask *, CDC *dc)
|
||||
{
|
||||
DrawTable(dc);
|
||||
if (gcheats==ON) {
|
||||
GrPrint(dc, FONT_WIDTH, FONT_HEIGHT, "Cheats ON!\nWord: %s", word);
|
||||
}
|
||||
GrPrint(dc, dc->width-FONT_WIDTH*21, FONT_HEIGHT, "Toggle theme: CTRL-T\n Quit: CTRL-Q | ESC");
|
||||
GrPrint(dc, dc->width-FONT_WIDTH*(StrLen(version)+1), dc->height-(FONT_HEIGHT*3), version);
|
||||
DrawWin(dc);
|
||||
}
|
||||
|
||||
U0 ResetGame()
|
||||
{
|
||||
I64 i;
|
||||
I64 randomWord = RandRng(,wcnt);
|
||||
|
||||
word = wwords[randomWord];
|
||||
if (word == NULL)
|
||||
throw('WN');
|
||||
|
||||
cdepth=0;
|
||||
|
||||
for (i=0; i<WDEPTH*WLEN+1; i++) {
|
||||
gameTable[i] = '\0';
|
||||
}
|
||||
|
||||
win=W_NONE;
|
||||
}
|
||||
|
||||
U0 Wordle()
|
||||
{
|
||||
U64 sc;
|
||||
I64 i;
|
||||
|
||||
wcnt = WordInit();
|
||||
if (wwords == NULL)
|
||||
throw('WLN');
|
||||
|
||||
gameTable = MAlloc(sizeof(U8)*WDEPTH*WLEN+1);
|
||||
ResetGame();
|
||||
|
||||
SettingsPush();
|
||||
DocClear();
|
||||
AutoComplete();
|
||||
WinBorder();
|
||||
WinMax();
|
||||
DocCursor();
|
||||
|
||||
if (wdark)
|
||||
WordleDark();
|
||||
else
|
||||
WordleLight();
|
||||
|
||||
Fs->draw_it = &WordleDrawIt;
|
||||
|
||||
I64 wbase,len;
|
||||
U8 *cheatCode="elephants";
|
||||
I64 cheatIdx=0;
|
||||
try {
|
||||
while (TRUE) {
|
||||
wbase=cdepth*WLEN;
|
||||
len=StrLen(gameTable+wbase);
|
||||
|
||||
U8 key = GetKey(&sc);
|
||||
switch (key) { // FIXME: This can probably be optimized further
|
||||
case 'a'...'z':
|
||||
if (key == cheatCode[cheatIdx])
|
||||
cheatIdx++;
|
||||
else
|
||||
cheatIdx=0;
|
||||
|
||||
if (cheatIdx == StrLen(cheatCode))
|
||||
gcheats=!gcheats;
|
||||
|
||||
if (win != W_NONE) break;
|
||||
if (wbase+len >= (cdepth+1)*WLEN) break;
|
||||
if (cdepth != 0)
|
||||
if (wbase+len <= (cdepth-1)*WLEN) break;
|
||||
|
||||
if (len <= WLEN) {
|
||||
gameTable[wbase+len] = key;
|
||||
}
|
||||
break;
|
||||
case CH_BACKSPACE:
|
||||
if (win != W_NONE) break;
|
||||
if (wbase+len > (cdepth+1)*WLEN) break;
|
||||
if (cdepth != 0)
|
||||
if (wbase+len <= (cdepth-1)*WLEN) break;
|
||||
|
||||
if (len > 0) {
|
||||
gameTable[wbase+len-1] = '\0';
|
||||
}
|
||||
break;
|
||||
case '\n':
|
||||
if (win != W_NONE) {
|
||||
ResetGame();
|
||||
break;
|
||||
}
|
||||
if (len == 5)
|
||||
cdepth++;
|
||||
win = CheckWin();
|
||||
break;
|
||||
case CH_CTRLT:
|
||||
if (wdark)
|
||||
WordleLight();
|
||||
else
|
||||
WordleDark();
|
||||
wdark=!wdark;
|
||||
break;
|
||||
case CH_CTRLQ:
|
||||
case CH_SHIFT_ESC:
|
||||
case CH_ESC:
|
||||
goto wordle_done;
|
||||
}
|
||||
}
|
||||
} catch PutExcept;
|
||||
|
||||
wordle_done:
|
||||
Free(gameTable);
|
||||
|
||||
for (i=0; i<wcnt; i++)
|
||||
Free(wwords[i]);
|
||||
Free(wwords);
|
||||
|
||||
SettingsPop();
|
||||
MenuPop();
|
||||
}
|
||||
|
||||
"\n";
|
6
tos_project.toml
Normal file
6
tos_project.toml
Normal file
@ -0,0 +1,6 @@
|
||||
[General]
|
||||
Name="wordletos"
|
||||
Author="Slendi"
|
||||
Version="0.1"
|
||||
|
||||
[Dependencies]
|
Loading…
x
Reference in New Issue
Block a user