Froggo - made in a week very shortly after I discovered the wonderful Pico8!
It's a remake of the arcade game frogger, manoeuvre the frogs to cross the road and river to score points, get all five frogs across securely to complete a level. The levels increase in difficulty as you progress. What is the best high score you can reach?
v1.1:
- added some nicer water effects
Altough I was born a little too early to call this a "childhood" game I can still appreciate it's relevance of this game as a good first game for any beginner programmer. Enjoy!
Controls:
Flap with Mouse or Up
I'd love feedback on the code if anybody is willing :)
UPDATE:
- incorporated @Cutievirus feedback, it feels way better now. Thanks! (fun sidenote: All I had to do was shift "-" right once.
- made it playable with the up button-making this a single button game. Thanks for the feedback, @ahrotahn
UPDATE 6.4.24:
- added automatic saves
Introduction
Hi all, this is my first game uploaded into lexaloffle, hope you enjoyed playing it as much as i enjoyed making it.
Gameplay
This game works a little like yahtzee and roguelite combined into one.
Press arrow keys to move around and o key to accept...
Features
- Progression
- Synergies
- Yahtzee
- Artifacts
- Hero Roster
- Curses
- Achievements
- Secrets
- Varying difficulties
- Frustration
and many more...
Credits
Just me...
Bugs
I'm pretty sure i tested most of the features.. but if there are bugs just drop a comment and i'll fix it.
winStay is a library that is used to easily keep window location and size persistent after closing the program. winStay has one function winStay
, which has three arguments:
name
is the name of the folder in which you want to keep the save data in within/appdata/
.width
is the default window width.height
is the default window height.
How to use winStay with yotta
After first installing Yotta, run the following commands:
> cd /ram/cart
> yotta init
> yotta add #lib_winstay-0
> yotta apply
Finally add the following code to the top of main.lua
.
[ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=143669#p) |
Desktop cat 1.0
This is a desktop wallpaper that lets you watch a cat run around and play! It uses up barely any cpu at all (~0.0113 as of 0.8), so dont worry about it eating up too much cpu.
Features:
Watch a cat run around and play on your desktop! It can roam around, sit or sleep, chase the mouse, or even chase a toy around!
On boot, it spawns a random amount of toys (and cats!), but the chance for a lot to spawn is pretty low.
Sometimes the cats do try and break things, so dont be discouraged if you come back to find all of the toys are missing.
To install this animated wallpaper, put the file in /picotron/drive/appdata/system/wallpapers/. then just select it from settings.
Here's my /appdata/system/startup.lua
file (picotron automatically runs it on startup)
-- take str, delete all chars between -- indices i0 and i1 (inclusive), and -- insert newstr into that space local function splice(str,i0,i1, newstr) return sub(str,1,max(1,i0)-1)..(newstr or "")..sub(str,i1+1) end -- use str:find to do sed-like file editing. -- no lua patterns, just literal string matching -- return str, but replace the first instance of cut with paste local function _replace(str,cut,paste) local i0,i1 = str:find(cut,1,true) -- no pattern-matching if not i0 then return str,false end return splice(str,i0,i1,paste),true end local function sedish(fname,mods) local src = fetch(fname) if not src then printh("sedish: couldn't find file "..fname) return end for i,mod in ipairs(mods) do local cut,paste = unpack(mod) -- printh(cut.." "..paste) if not cut or not paste then printh("sedish: bad cut/paste data in "..fname) return end local changed src,changed = _replace(src,cut,paste) if not changed then printh("sedish: mod #"..i.." did nothing to "..fname) end if not src or #src==0 then printh("sedish: bad result in "..fname) return end end -- printh("storing "..fname..": "..sub(src,1,100):gsub(" [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=143638#p) |
Just testing changing video resolutions and drawing a grid in different sizes. Has a lot of random things I was just playing around with, like sprite scaling, using a custom mouse cursor and getting coordinates. Originally was drawing the grid using sprites, but line() turned out to be easier. Was having a hard time getting sspr to stretch a single pixel row correctly.
The balls get recreated every time the grid size or resolution changes.
Since we've already got classic Minesweeper by @TeamPuzel (and because someone in the thread very specifically suggested it) I felt like starting on Solitaire to add to the classic Windows games collection!
It's mostly just graphics for now and a little bit of UI work to get it in a window. I'm still working on the Queen and King card graphics, but wanted to get this out there for perhaps some feedback on the trajectory I'm on.
No promises about when it'll be done--I'm mostly into doing graphics but am looking forward to tackling the challenge of getting it functional too.
I hope I've managed to strike the right balance between authenticity and low-res adaptation in a softer, more "Picotron" colour palette!
IMPORTANT: Picotron 0.1.0c adds a new command called info
. As such, this cartridge has been renamed to infman
. Please update this command if you have an older version installed, then use rm /appdata/system/util/info.p64
to delete the old version!
This cartridge is a really simple utility that acts as a command list and manual. The goal of this utility is to make it so you don't have to worry if a command has a --help
parameter or not (which I've noticed is wildly inconsistent, even among the builtin commands), and also to give an easily accessible list of commands (since help
doesn't list them all)
Installation
First, load the cart with load #infman-1
After loading, you have two options for "installation" (these work for updating too):
I'd like to propose a new BBS forum category alongside 'Releases' and 'Work in Progress': 'Supporting'
Picotron is a lot more complicated than PICO-8 and is liable to have a lot more "support" or "non-end-user" releases, like tools intended for developers to use in making their final cartridges or utilities intended to be installed into the system for general use.
These differ from released games or sketches or demos in that they're not usually intended to be terribly useful or entertaining without using them from another place. Given Picotron's nature, I expect a lot of these.
This way, it would be easier to find games and novelties in Releases - but still look through the latest tools and utilities in Supporting. A future SPLORE-style system for Picotron might then be able to focus on just the more entertaining game-style or demo-style releases intended for end use, while hiding away the supporting packages used to make those items.
Does anyone else think this would this be helpful going forward?
This cartridge is an installer and uninstaller for a new globally-available command: 'merge'. You can install this by running this cartridge and pressing X as prompted, manually by copying /ram/cart/exports/appdata/system/util/new.lua
to /appdata/system/util/new.lua
, or by using my dependency and package manager 'yotta' to install this BBS cartridge ID as a util (yotta util install #util_merge-0
).
The merge command will take a number of source directories and a single destination directory, and will recursively merge the source directories atop the destination directory. Normally, the system-provided cp
command is not kind to attempts to do this - a cp src dst
will result in dst
being replaced by a copy of src
. This, however, will attempt to intelligently place new source files into the destination directory tree without interfering with any of the remaining destination files.
This cartridge is an installer and uninstaller for a new globally-available command: 'new'. I already released this in bare script form here and it's largely unchanged, but I've adopted a system that I moved it into for installation and uninstallation on my Picotron, and you can too! You can install this by running this cartridge and pressing X as prompted, manually by copying /ram/cart/exports/appdata/system/util/new.lua
to /appdata/system/util/new.lua
, or by using my dependency and package manager 'yotta' to install this BBS cartridge ID as a system util (yotta util install #util_new-0
).
This cartridge is an installer and uninstaller for a new globally-available command: 'yotta'.
Installation
Initial Installation:
load #yotta
in your Picotron terminal- Ctrl+R to run installer cartridge
- Press X to install
Upgrade Installation from v1.0:
yotta util install #yotta
in your Picotron terminalyotta version
in your Picotron terminal
You should see "yotta version v1.1"
This 'version' command will also migrate the yotta installation files to clean up a little bit. It will move the global yottafile into /appdata/yotta instead of /appdata/system, and it will clean up some of the new CRC verification files that got installed that the new version will handle better behind-the-scenes.
This cartridge is a library cartridge intended to be used by some of my other cartridges. You can use it too, if you'd like. For utilities, it offers the one-button ability to permanently install or uninstall the files from your Picotron system drive. I use this to install new utilities to/from /appdata/system/util/
, but you can install and uninstall files to any permanent storage location with it.
Once loaded, in /ram/cart/exports/
, you will find main.lua
. This can be copied into your project and included, or installed by my yotta dependency and package manager (released separately). This utility shim offers the following functions which you can either call in your init/draw/update lifecycle functions, or use to replace your lifecycle functions outright. I tend to do the latter.