Quick implementation of the "Focus Point" puzzles from Microsoft's Pandora's Box

Started by PixelOutlaw, March 02, 2025, 04:55:19

Previous topic - Next topic

PixelOutlaw

Hello All,

I've been playing Pandoras Box quite a bit on Windows XP and wanted to see if I could clone the "Focus Point" puzzle type.
The source is in BlitzMax and can be obtained below. You need only load FocusPoint.bmx into BlitzMax and compile. :)
https://github.com/RyanBurnside/FocusPoint

Here is a video showing the game.
One DEFUN to rule them all, One DEFUN to find them, One DEFUN to RETURN them all, and in the darkness MULTIPLE-VALUE-BIND them.

Derron

Source code is really tidy/clean ... and it uses some newer (NG) types like TObjectList. "Small" games like this is what I would like to see added as "samples" to BlitzMax NG (of course with "public" imagery). Something "beginners" can learn from.

The game idea is also .. interesting (let's see who adds this as minigame to their casual game).


bye
Ron 

PixelOutlaw

Thanks for the compliment I appreciate it!
The images are public domain and I've linked where I found them in the directories.

I would like to polish it up a little bit before I include it.

I'm just happy that BlitzMax still exists for young programmers. I just randomly jumped in after being away for something like 10 years. It's my opinion that current game engines are way more than what many programmers need and it's nice to have software that just provides the graphics and multimedia capabilities I need. I do wish it had first class functions ;). I was sad to hear that the original author had passed away. I wish I could have told him thanks.

I have no idea what's going on with the forum text box here but it seems the text is going all wonky from my phone and changing size.
One DEFUN to rule them all, One DEFUN to find them, One DEFUN to RETURN them all, and in the darkness MULTIPLE-VALUE-BIND them.

Derron

If you know the function header you can store functions in variables and also pass them around.

Function test:int(x:int, s:string)
End Function


Type TContainer
  Field f1:int(a:int, b:string)

  Method SetF1(f:int(some:int, other:string))
    self.f1 = f
  End Method
End Type

Local c:TContainer = New TContainer
c.f1 = test
'or
c.SetF1(test)

c.f1(10, "hello")


Yes, it is kinda limited but passing around function pointers is possible ... so "first class functions" partially fulfilled?


bye
Ron