MCPcopy Index your code
hub / github.com/cryptopunksnotdead/lets-go-programming-cryptopunks

github.com/cryptopunksnotdead/lets-go-programming-cryptopunks @v0.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.1.0 ↗ · + Follow
15 symbols 36 edges 9 files 1 documented · 7%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Let's Go! Programming (Crypto) Pixel Punk Profile Pictures & (Generative) Art with Go - Step-by-Step Book / Guide

Inside Unique 24×24 Pixel Art on the Blockchain...

by Gerald Bauer, et al

1

Do-It-Yourself (DIY) - Yes, You Can! - Mint Your Own Punks in Original 24x24 Pixel Format or With 2X / 4X / 8X Zoom

Step 0 - Download a punks all-in-one composite image / collection

One time / first time only - Download a punks pixel art collection from the Awesome 24px Downloads - Free Pixel Art Collections in the 24x24 Format page.

Let's try the 1000 More Punks collection in a single all-in-one 600×960px image (~180 kb) for free. See morepunks.png »

Let's create a program to mint (more) punk pixel art images. Let's (re)use the pixelart package from the learn pixel art org.

Step 1 - Read punk composite image

package main


import (
  "fmt"
  "github.com/learnpixelart/pixelart.go/pixelart"
)


func main() {

  fmt.Printf( "Hello, Pixel Art v%s!\n", pixelart.Version )

  path     := "./morepunks.png"
  tileSize := pixelart.Point{24, 24}
  punks    := pixelart.ReadImageComposite( path, &tileSize )

  fmt.Println( punks.Bounds() )
  //=> (0,0)-(600,960)
}

Step 2 - Start minting

Note: By default punks get saved in the original 24x24 pixel format and the first punk starts at index zero, that is, 0. running up to 999.

Let's mint punk #0, #18, #40, and #88. Add inside func main():

punk := punks.Tile( 0 )
fmt.Println( punk.Bounds() )
//=> (0,0)-(24,24)

punk.Save( "./morepunk0.png" )


punks.Tile( 18 ).Save( "./morepunk18.png" )
punks.Tile( 40 ).Save( "./morepunk40.png" )
punks.Tile( 88 ).Save( "./morepunk88.png" )

And voila!

Let's change the zoom factor:

punks.Tile( 0 ).Zoom( 4 ).Save( "./morepunk0@4x.png" )
punks.Tile( 18 ).Zoom( 4 ).Save( "./morepunk18@4x.png" )
punks.Tile( 40 ).Zoom( 4 ).Save( "./morepunk40@4x.png" )
punks.Tile( 88 ).Zoom( 4 ).Save( "./morepunk88@4x.png" )

And voila in 4x!

Proof-of the pudding. If you want to run the ready-made sample program in 01_tile/ yourself try:

  • Generate a go module (go.mod)
  • Add the pixelart package via go get to go.mod
  • Run the code
$ cd 01_tile
$ go mod init example.com/01_tile
$ go get github.com/learnpixelart/pixelart.go/pixelart
$ go run main.go

Let's try with the classic gray-ish background in red/green/blue (rgb) as a hexstring #638596:

punks.Tile( 0 ).Background( "#638596" ).Zoom( 4 ).Save( "./morepunk0_(grayish)@4x.png" )
punks.Tile( 18 ).Background( "#638596" ).Zoom( 4 ).Save( "./morepunk18_(grayish)@4x.png" )
punks.Tile( 40 ).Background( "#638596" ).Zoom( 4 ).Save( "./morepunk40_(grayish)@4x.png" )
punks.Tile( 88 ).Background( "#638596" ).Zoom( 4 ).Save( "./morepunk88_(grayish)@4x.png" )

And voila!

Philip! Phree the Phunks! Let's try to flip vertically, that is, mirror, the punk images - turning right-looking punks into left-looking.

punks.Tile( 0 ).Background( "#638596" ).Mirror().Zoom( 4 ).Save( "./morephunk0_(grayish)@4x.png" )
punks.Tile( 18 ).Background( "#638596" ).Mirror().Zoom( 4 ).Save( "./morephunk18_(grayish)@4x.png" )
punks.Tile( 40 ).Background( "#638596" ).Mirror().Zoom( 4 ).Save( "./morephunk40_(grayish)@4x.png" )
punks.Tile( 88 ).Background( "#638596" ).Mirror().Zoom( 4 ).Save( "./morephunk88_(grayish)@4x.png" )

And voila!

And so on. Happy miniting.

Bonus - Glory to Ukraine! Fuck (Vladimir) Putin! Stop the War! - Send A Stop The War Message To The World With Your Profile Picture

Let's try the ukraine flag in the background (with the built-in Ukraine helper method):

punks.Tile( 0 ).Ukraine().Zoom( 4 ).Save( "./morepunk0_flag(ukraine)@4x.png" )
punks.Tile( 18 ).Ukraine().Zoom( 4 ).Save( "./morepunk18_flag(ukraine)@4x.png" )
punks.Tile( 40 ).Ukraine().Zoom( 4 ).Save( "./morepunk40_flag(ukraine)@4x.png" )
punks.Tile( 88 ).Ukraine().Zoom( 4 ).Save( "./morepunk88_flag(ukraine)@4x.png" )

And voila!

Or try two-colored with the background in blue and the silhouette (foreground) in yellow and vice versa:

punks.Tile( 0 ).Silhouette("#ffdd00").Background("#0057b7").Zoom( 4 ).Save( "./morepunk0_silhouette(ukraine)@4x.png" )
punks.Tile( 18 ).Silhouette("#0057b7").Background("#ffdd00").Zoom( 4 ).Save( "./morepunk18_silhouette(ukraine)@4x.png" )
punks.Tile( 40 ).Silhouette("#ffdd00").Background("#0057b7").Zoom( 4 ).Save( "./morepunk40_silhouette(ukraine)@4x.png" )
punks.Tile( 88 ).Silhouette("#0057b7").Background("#ffdd00").Zoom( 4 ).Save( "./morepunk88_silhouette(ukraine)@4x.png" )

And voila!

Are Gophers, The New Punks?

Let's retry with Egon Elbre's gophers collection in the 32x32 pixel format. See the all-in-one composite image with 35 gophers in a 7x5 grid - gophers.png

(~14kb)

Let's create a program to mint gopher pixel art images.

Step 1 - Read gopher composite image

package main


import (
  "fmt"
  "github.com/learnpixelart/pixelart.go/pixelart"
)


func main() {

  fmt.Printf( "Hello, Pixel Art v%s!\n", pixelart.Version )

  path     := "./gophers.png"
  tileSize := pixelart.Point{32, 32}
  punks    := pixelart.ReadImageComposite( path, &tileSize )

  fmt.Println( gophers.Bounds() )
  //=> (0,0)-(224,160)
}

Step 2 - Start minting

Let's mint gopher #0 (neutral), #1 (pirate), #16 (heart eyes), and #28 (mind blown). Add inside func main():

gopher := gophers.Tile( 0 )
fmt.Println( gopher.Bounds() )
//=> (0,0)-(32,32)

gopher.Save( "./gopher0.png" )

gophers.Tile( 1 ).Save( "./gopher1.png" )
gophers.Tile( 16 ).Save( "./gopher16.png" )
gophers.Tile( 28 ).Save( "./gopher28.png" )

And voila!

Let's change the zoom factor:

gophers.Tile( 0 ).Zoom( 4 ).Save( "./gopher0@4x.png" )
gophers.Tile( 1 ).Zoom( 4 ).Save( "./gopher1@4x.png" )
gophers.Tile( 16 ).Zoom( 4 ).Save( "./gopher16@4x.png" )
gophers.Tile( 28 ).Zoom( 4 ).Save( "./gopher28@4x.png" )

And voila in 4x!

Proof-of the pudding. If you want to run the ready-made sample program in 01_tile_(gophers)/ yourself try:

  • Generate a go module (go.mod)
  • Add the pixelart package via go get to go.mod
  • Run the code
$ cd 01_tile_(gophers)
$ go mod init example.com/01_tile
$ go get github.com/learnpixelart/pixelart.go/pixelart
$ go run main.go

Let's try with the classic gray-ish background in red/green/blue (rgb) as a hexstring #638596:

gophers.Tile( 0 ).Background( "#638596" ).Zoom( 4 ).Save( "./gopher0_(grayish)@4x.png" )
gophers.Tile( 1 ).Background( "#638596" ).Zoom( 4 ).Save( "./gopher1_(grayish)@4x.png" )
gophers.Tile( 16 ).Background( "#638596" ).Zoom( 4 ).Save( "./gopher16_(grayish)@4x.png" )
gophers.Tile( 28 ).Background( "#638596" ).Zoom( 4 ).Save( "./gopher28_(grayish)@4x.png" )

And voila!

Bonus - Glory to Ukraine! Fuck (Vladimir) Putin! Stop the War! - Send A Stop The War Message To The World With Your Profile Picture

Let's try the ukraine flag in the background (with the built-in Ukraine helper method):

gophers.Tile( 0 ).Ukraine().Zoom( 4 ).Save( "./gopher0_flag(ukraine)@4x.png" )
gophers.Tile( 1 ).Ukraine().Zoom( 4 ).Save( "./gopher1_flag(ukraine)@4x.png" )
gophers.Tile( 16 ).Ukraine().Zoom( 4 ).Save( "./gopher16_flag(ukraine)@4x.png" )
gophers.Tile( 28 ).Ukraine().Zoom( 4 ).Save( "./gopher28_flag(ukraine)@4x.png" )

And voila!

2

10 000 Punks - The Free Do-It-Yourself (DIY) White Label Quick Starter Edition

Q: Dear sir, how do I get rich in ~bits-coin~ punks?

A: If we all buy ~bits-coin~ punks from one another at ever higher prices we'll all be rich beyond our wildest dreams.

21 million bits-coin. 10 000 punks. Do the math.

Let's (re)create from zero / scratch a pixel-perfect copy of the Matt & John's® 10 000 punks collection (Anno 2017).

Yes, you can. Do-it-yourself (DIY) and own 100% forever your home-made free clean-room copy of the billion dollar (2400×2400) bitmap that kicked-off a trillion dollar get-rich-quick digital art mania / bubble in 2021 - selling "decentralized" ~blockchain tokens~ database records to ever greater fools at ever higher prices.

Inside the Magic Money Machine - Mint 10 000 Unique Punks from 11 Archtetypes 'n' 122 Attributes

Let's copy and (re)use all punk (building) blocks in the basic series (24×24):

11 Archetypes:

Male 1/2/3/4 , Female 1/2/3/4 , Zombie , Ape , Alien

122 Attributes (by category and a-z): - Hat - Bandana (m/f) , Beanie (m) , Cap (m/f) , Cap Forward (m) , Cowboy Hat (m) , Do-rag (m) , Fedora (m) , Headband (m/f) , Hoodie (m) , Knitted Cap (m/f) , Pilot Helmet (f) , Police Cap (m) , Tassle Hat (f) , Tiara (f) , Top Hat (m) - Hair - Blonde Bob (f) , Blonde Short (f) , Clown Hair Green (m/f) , Crazy Hair (m/f) , Dark Hair (f) , Frumpy Hair (m/f) , Half Shaved (f) , Messy Hair (m/f) , Mohawk (m/f) , Mohawk Dark (m/f) , Mohawk Thin (m/f) , Orange Side (f) , Peak Spike (m) , Pigtails (f) , Pink With Hat (f) , Purple Hair (m) , Red Mohawk (f) , Shaved Head (m) , Straight Hair (f) , Straight Hair Blonde (f) , Straight Hair Dark (f) , Stringy Hair (m/f) , Vampire Hair (m) , Wild Blonde (f) , Wild Hair (m/f) , Wild White Hair (f) - Eyes - 3D Glasses (m/f) , Big Shades (m/f) , Classic Shades (m/f) , Eye Mask (m/f) , Eye Patch (m/f) , Horned Rim Glasses (m/f) , Nerd Glasses (m/f) , Regular Shades (m/f) , Small Shades (m) , VR (m/f) , Welding Goggles (f) - Eyes (Makeup) - Blue Eye Shadow (f) , Clown Eyes Blue (m/f) , Clown Eyes Green (m/f) , Green Eye Shadow (f) , Purple Eye Shadow (f) - Blemishes - Mole (m/f) ![]

Core symbols most depended-on inside this repo

makeImage24x24
called by 133
punkverse/image.go
Find
called by 7
punkverse/image.go
generatePunk
called by 5
02_generate/main.go
Generate
called by 4
punkverse/image.go
normalize
called by 3
punkverse/image.go
normalize
called by 2
02_generate/main.go
normalize
called by 2
B1_export/main.go
readCSV
called by 1
02_generate/main.go

Shape

Function 15

Languages

Go100%

Modules by API surface

punkverse/image.go4 symbols
02_generate/main.go4 symbols
B1_export/main.go3 symbols
A2_generate/main.go1 symbols
A1_generate/main.go1 symbols
01_tile_(gophers)/main.go1 symbols
01_tile/main.go1 symbols

For agents

$ claude mcp add lets-go-programming-cryptopunks \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact