rainbow spiral (64 second loop)
(256 chars)
::★::cls() for r=4,128,4 do for i=0,7/4,1/4do q=(t()*(1+r/32)/8)%1 v0=mid((q-i)*4,1) v1=mid((q-i)*4+2,1) a=i-1/8 x=64+cos(a)*r*0.71 y=64+sin(a)*r*0.71 a+=3/8u=cos(a)v=sin(a) if(v1>v0)line(x+u*v0*r,y+v*v0*r,x+u*v1*r,y+v*v1*r,8+(r/4)%8) end end flip() goto ★ |
Thanks to HTML export, it's now possible to run picotron cartridges on a mobile phone.
However, at present the DPAD isn't displayed, and touch operations are replaced by mouse movements, making operation very uncomfortable.
So I wrote the following code to simulate touch operations.
This also led me to notice some strange behavior, but that's another story.
I'd be happy if the picotron itself could support touch operations in the future.
function _init() window{cursor=0} -- Hide the mouse cursor tch = touch.new() -- Initializing the touch structure end function _draw() -- Touch Structure Update. This is necessary to determine touch. tch:check() --[[ *** Wait until it truly becomes the initial state *** Since _init cannot fully initialize, it waits for time to pass in the main program. It seems that the time t() stops in _init, and the mouse position does not change. It seems that time progresses entirely within _draw(_update). This is to prevent unnecessary tap events from occurring because a touch is determined by moving the position of the mouse cursor, and the initial position of the mouse cannot be obtained correctly. There may be a way to avoid this using memory manipulation, etc. This decision statement is clearly a waste of processing. --]] if t() < 0.2 then return end -- Processes when it is determined that a touch has occurred. if tch.tap then splatter(tch.x, tch.y) end end -- [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=156240#p) |
Once Upon a late night dreary, I logged in weak and weary, Over many a quaint of forgotten Splore...
I searched up "Horror" and it said "Nevermore"
Old poetry aside, Anyone know any Pico-8 horror games? Seeing as it's Halloween and I've come up short, and HALLOWEEN of all times. If any have good releases, please post them here for the next thrill seeker like me.
I'll start:
i felt i should bring this up! having to move my mouse so slowly to try and get the number i need out of a knob in SFX tends to really strain my wrist ;; being able to click a box and type a number much like GFX allows would be much, much appreciated, or perhaps the scroll wheel could allow you to increment/decrement by 1!
v1.1
Here is a Text system that I've been working on! Any type of feedback or criticism is welcome!
~~ PROS ~~
- Dynamic Name Tab
- Simply Formatted
- Light Weight
~~ CONS ~~
- Manually add a new line using '\n'
~~ UPDATE CHANGELOG ~~
1.1 - Dynamic name now works with special icons (Thanks @RealShadowCaster)
1.0 - Initial release
Hi folks,
I realised I hadn't shared this in the BBS yet!
I made this game back in July for the LITHOBREAKERS - 01 Defenestration Jam. It is an anonymous jam with between friends, so I originally had to publish it under a pseudonym. Hence why I didn't post it here at the time.
This is my first Picotron (and pico-whatever) ever!
I made it using about.p64
as a base. The text is picked up from a .tsv file and it uses a parser that a friend wrote for me. If you check the code it also has a function for visualising table data that I found in stackoverflow LOL
I really enjoyed making this and trying to figure out Lua and the quirks of Picotron!
Speed, skill, luck...high scores
This is a high score companion cart to Steel Hunter. Navigate the minefield to collect as many pickups as you can within 2-minutes, or see how fast you can complete levels as they get more challenging.
- 2 modes of play
- 3 difficulty settings
- High score tables
Controls
Arrows / D-Pad = Move submarine
Gamepad recommended. Controller mappings may vary.
Modes of play
-
Challenge mode - You get 2 minutes to collect as many pickups as you can. You get bonus points for lasting the entire time and for each extra sub you have.
- Survival mode - Collect all the pickups as quickly as possible to advance to the next level. Bonus points are relative to speed.
Difficulty settings
- Easy: Screen wrapping. No oxygen meter. Only grid minefield.
- Normal: Screen wrapping. Oxygen meter. Grid and maze minefields.
- Hard: No wrapping. Oxygen meter. Only maze minefields.
Collect high scores
High score tables for each mode and each difficulty. Challenge yourself or challenge your friends to get your name etched into history.
Behind the game
I found myself treating the first level of Steel Hunter as a speed challenge, not unlike the original "Sea Chase" game I used for inspiration. That along with some suggestions from the community brings you Steel Hunter: Evasion Tactics!
For more sea battles and a boss fight,
Feature Overview
Buttons input
getbtns()
updates the extended button(key) input state.
- This must be done in the
_update()
function. - Required
poke(0x5f2d,1)
- button values:
- btrg: returns true only for frames where a key was entered.
- butrg: returns true only for frames where a key was released.
- btns: returns true whenever the key is pressed.
- btnc: returns the count while the key is held.[number]
- _key: typed characters.[string]
- _ent: enter key typed.
- _del: delete/backspace key typed.
- modifier keys values:
- _ctr: ctrl/command key pressed.
- _alt: alt/opt key pressed.
- _sft: shift(left) key pressed.
I'd like to make some associative tables e.g. table={x=7,y=90,z=40}
but I want to save tokens by using a string because I'm going to have a lot of them, and make a function that returns a table based on whatever is in the string.
So something like:
string1="x=7,y=90,z=40" string2="empty=100, dinner=casserole, transport=horse, weight=150" table1=assoc_table(string1) table2=assoc_table(string2) ?table1.z -- 40 ?table2.transport -- horse |
how do I go about this? split
wont work. what does my function assoc_table(str)
look like?
Hey! I need help with my first platformer game, goddess of the wind.
The collision isn't working as I hoped, and the reason is either im doing it completely wrong, or the collision box is too small.
Heres the code for the collision:
if btn(0) then
p.dx-=.2
end
if btn(1) then
p.dx+=.2
end
if p.dx<0 and not fget(mget((p.x-1)\8,(p.y+3)\8),0) or p.dx<0
and not fget(mget((p.x-1)\8,(p.y+4)\8),0) or p.dx>0
and not fget(mget((p.x+8)\8,(p.y+3)\8),0) or p.dx>0
and not fget(mget((p.x+8)\8,(p.y+4)\8),0) then
p.x+=p.dx
end
if p.dy<0 and not fget(mget((p.x+3)\8,(p.y)\8),0) or p.dy<0
and not fget(mget((p.x+4)\8,(p.y)\8),0) or p.dy>0
and not fget(mget((p.x+3)\8,(p.y+9)\8),0) or p.dy>0
and not fget(mget((p.x+4)\8,(p.y+9)\8),0) then
p.y+=p.dy
end
If you have any ideas or better ways to write the code, please tell me. Thanks!