Path Finding Algorithms + Animation (Mega Man X Study)

This is based on the spider boss of Mega Man X.  The most interesting feature of that boss was that it would produce a web which is basically a graph, and then in would chose almost at random, a path down the web. I say almost because it would sometimes choose a less efficient path to hitting the player, but other times it would seems to choose the shortest path to the player and that made that boss very interesting to fight and even a bit scary.

So I am trying to reproduce that idea with pygame. What I have so far is a black sprite representing the spider, and green gridblocks representing the traversable web, and red representing not part of the web. If you press 4, the shortest path from the hard coded start position, to the hard coded end position, calculated using the basic shortest path dfs algorithm I recently learned. Then the sprite is updated as with position changes based on stepping through the path list.

This path is from (2,0) to (0,5). (x, y)

Spider at start position.
Spider at start position.
Spider on it's way through shortest path.
Spider on it’s way through shortest path.

Then I have an even more basic find first path algorithm. So if you press 3 the spider sprite will just take that path which is longer.

Spider on longer path 1.
Spider on longer path 1.
Spider on longer path 2.
Spider on longer path 2.
Spider on longer path 3.
Spider on longer path 4.
Spider on longer path 4.

Attempts at Pathfinding : Argg!!! The little technicalities

I have been spending the last few days wrapping my head around basic path finding with recursion for backtracking, and also stumbled across path finding with just for loops and a queue.

I have been trying to add the path-finding into both my games, and another really interesting idea I have which should actually be easier.

My stumbling points today have actually just been little python technicalities involving dictionaries, tuples, un-hashables, and for row in list meaning „row“ is actually part of a list instead of an int making it unhashable in dictionaries if I use the same variable again later etc etc. Stuff like that took up the whole day lol.

Also using a dictionary to hold coordinates as keys and as values for keys has been slow because of the above I guess.

Also just learning the best way to implement a graph and how the map should work with the grid.

Space Game I’m working on: Farscape Inspired: Path Finding

Farscape: My Brother's Prowler
Farscape: My Brother’s Prowler

I am working on a game based on Farscape where you get to fly a prowler as Commander Craise’s brother and try to not get killed by John Chriton’s „death-pod“. I plan to have a single Module appear along with a black hole sprite and the ship will be attracted to them both thus following the story line some what, only you have a chance to kill Chriton instead of crashing into him which would be an instant. game over.

Today though I decided to work on what may become an AI for a spaceship weapon. I learned about graphs to help me create a graph overlay on the screen that I could do path finding algorithms on.

What I have so far is graph points that do represent the range of the screen.
Then I have a function that with a given starting point actually right now it just maps the neighboring cells when you press ‚4‘ and creates objects in each of those cells.

What I was planning on doing was making each those objects detect collisions with other objects and use that as the bases for path finding. However, I’m rethinking this because path finding is supposed to be about nodes not cells.

I will have to decrease the number of enemy objects also and decrease the sixe of the ship and the objects, or increase the size of the screen and the graph, so that I can actually something where path finding would be useful. Maybe for evasion, or for homing. Also the path finding will have to account for the fact that the objects will move from where they were when the path was created.

etc etc.

Set Builder Notation(Needed to understand Sets and then Markov Models)


S={}: means S is will be a „Set“

R stands for real numbers.

R^2 stands for „real plane“ or „Cartesian Plane“

S={xR^2}: Specifies a Universe of Discourse, meaning the type of elements we are interested in, in the set. For example, integer numbers, words, etc.

^2 means „pairs of which“ so R^2 means „pairs of real numbers“

S={xR2x[0,1]^2}  Specifies the unierse of discourse and then further specifies the members from that universe that we want in our set which are [0,1] meaning all numbers between 0 and 1.

[0,1]^2 means pairs of 0 and 1

and also I think it’s about coordinates on a Cartesian Plane.

| means add another condition or“such that“.

∈ is a symbol that means „in“

I read some of the tutorial in the third link. I feel sick lol.

Language Learning Tool – Hanzify

This simple program allows the user to enter the name of a text file on their desktop(although the path in the code is to my desktop). The code then determines the most common 10 words, translates those words into Chinese, and creates a new txt file with every instance of the most common 10 words replaced with it’s Chinese translation, and also prints it to the python shell, or tries to print it to powershell but fails because utf-8.

The code 1
The code 1
The code 2
The code 2
The code 3
The code 3
Running the program
Running the program