Skip to content

Wave Function Collapse algorithm implemented in Python

Notifications You must be signed in to change notification settings

n0tcnj1eck4h/WFC-Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WFC-Python

Wave Function Collapse algorithm implemented in Python.

Example output

tiles.add(Tile('┌', [0, 1, 1, 0])) # Example output for this tileset definition:
tiles.add(Tile('┐', [0, 0, 1, 1])) # ├─╫┤└╫┤╶┼┼╜╓╫╜└╜└┴┘┌╫╫┤├┤╓┐║├┘╓╫┘╓┼╫╫╜║┌┐╓╫╜╓┴╫╫╫┴
tiles.add(Tile('└', [1, 1, 0, 0])) # ┘╷║└┐║└┬┤│╶╫╫┐╶┬─┐╓┴╫╫┼┼┘║├╜├─╫╜╓╫┤║║╶╫┼┤║║┌╜┌╫╫╜╓
tiles.add(Tile('┘', [1, 0, 0, 1])) # ─┤║╷└╜╷└┘├┬╜║│╓┤╶┤║╶╫╫┼┘┌╫┘╷└┐║╶╫╫┴╫╜╓╫┼┴╜║└┬┼╫╫─╜
tiles.add(Tile('┼', [1, 1, 1, 1])) # ┬┘║│╷╶┴┬─┴┘╶╫┴╫┼┬┘║╓╜║│╓┼╫─┤╓┘║╶╫╜╷║┌╜║└┬─╫┐│└╫╫┐┌
tiles.add(Tile('│', [1, 0, 1, 0])) # ╪═╬╪╪══╪════╬═╬╪╪═╬╬═╬╪╬╪╬═╪╬═╬═╬═╪╬╪═╬═╪═╬╪╪═╬╬╪╪
tiles.add(Tile('─', [0, 1, 0, 1])) # ┤╶╫┴┘╶┐│╷╓┬┐║╷║││╷║║╓╫┴╜├╜┌┴╜┌╜╶╫┐├╜└┐║╓┼─╜└┘┌╜║│├
tiles.add(Tile('├', [1, 1, 1, 0])) # ┘╷║╓┐╶┘├┘║││║│║│└┘║║║║╓─┘╓┤╓─┼┬┐║└┼┐╶┴╫╜│╷╷╷┌┤╶╫┘│
tiles.add(Tile('┤', [1, 0, 1, 1])) # ═╪╬╬╪══╪═╬╪╪╬╪╬╪══╬╬╬╬╬══╬╪╬═╪╪╪╬═╪╪══╬═╪╪╪╪╪╪═╬═╪
tiles.add(Tile('┬', [0, 1, 1, 1])) # ╓┤║║└─┬┘╶╜│└╜└╜└┬─╫╫╫╫╫┬┬╜├╫─┴┴┼╜╶┘└──╫┬┴┼┴┤└┤┌╫┬┘
tiles.add(Tile('┴', [1, 1, 0, 1])) # ╬╪╬╬══╪═══╪═════╪═╬╬╬╬╬╪╪═╪╬═══╪══════╬╪═╪═╪═╪╪╬╪═
tiles.add(Tile('┴', [1, 1, 0, 1])) # ║│║║╷╓┤╶─┬┴┬┐╓┐┌┘╷║║║║║└┴┬┘║╷╷╶┼─┬┐╷╷╷║│╓┴┐│┌┴┼╫┘┌
tiles.add(Tile('╶', [0, 1, 0, 0])) # ╜├╜║└╫┘╓┬┴┐│└╫┤└┬┘║║║║║╶┬┴┐║││╷│╓┤└┼┴┴╫┴╜╶┤└┼┬┘║╓┼
tiles.add(Tile('╷', [0, 0, 1, 0])) # ┌┼┐║╷║╓╫┤┌┴┘╓╫┘╓┤╓╫╜║║║╶┤╓┼╜└┴┼┴╫┘╓┴┐╷║╶─┬┤╓┼┘╓╜║│
tiles.add(Tile('═', [0, 2, 0, 2])) # ╪╪╪╬╪╬╬╬╪╪══╬╬═╬╪╬╬═╬╬╬═╪╬╪═══╪═╬═╬═╪╪╬══╪╪╬╪═╬═╬╪
tiles.add(Tile('║', [2, 0, 2, 0])) # ┼┴┴╫┴╜║║├┼─┬╜║╓╫┘║║╷║║║┌┼╜├─┬┐│┌╫┬╜╶┤├╜╓┐├┼╫┘┌╜╷║│
tiles.add(Tile('╬', [2, 2, 2, 2])) # ┼┐╶╜╓┬╫╫┼┴─┼┐║║║╶╫╜├╫╜║├┴┐└┬┴┤└┼╫┼┐╓┼┴─╫┼┼┤║┌┘╷└╜└
tiles.add(Tile('╜', [2, 0, 0, 1])) # ┼┴┬┐║├╫╜├──┤│║║║┌╫┐└╫─╜│┌┘╓┤┌┤╷│║├┴╜│╶─╫┘││║├┐└┬──
tiles.add(Tile('╓', [0, 1, 2, 0])) # ┤┌┤├╜├╜╷└┐┌┼┴╫╫╫┴╫┘╓╜╓┬┤└┬╜└┼┴┤└╜└┐╓┴┬┬╜┌┴┤║├┤╶┤┌┬
tiles.add(Tile('╫', [2, 1, 2, 1])) # ├┤├┴─┘╷│╷└┘├─╫╫╜╓╜╓╫─╜││╓┼┐┌┘╓┴┐╓─┴╜╶┴┘┌┤╓┘║├┘╓┘│└
tiles.add(Tile('╪', [1, 2, 1, 2])) # ┴┘│╓┬┐└┤│╷┌┘╓╜║╶╫─╜║╶┬┤└╫┤├┤╷║╓┤║┌┐╶─┬┐└┴╫┬╜│┌╜╓┴┬

The manually defined tileset uses a concept of connectors, where the elements of the list represent connection ID's of the north, east, south and west faces respectively.

About

Wave Function Collapse algorithm implemented in Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages