mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2026-03-10 21:25:31 +00:00
nes: added road, tint demo; extra tools; embed.html fetch remote url
This commit is contained in:
6
tools/nes/Makefile
Normal file
6
tools/nes/Makefile
Normal file
@@ -0,0 +1,6 @@
|
||||
|
||||
nametable.dat: road.png
|
||||
makechr -e error.png $< #-b 0000ff
|
||||
|
||||
road.png: road.py
|
||||
python road.py
|
||||
102
tools/nes/road.py
Executable file
102
tools/nes/road.py
Executable file
@@ -0,0 +1,102 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# Import a library of functions called 'pygame'
|
||||
import pygame
|
||||
import random
|
||||
from math import pi
|
||||
|
||||
# Initialize the game engine
|
||||
pygame.init()
|
||||
|
||||
# Define the colors we will use in RGB format
|
||||
BLACK = ( 0, 0, 0)
|
||||
WHITE = (255, 255, 255)
|
||||
BLUE = ( 0, 0, 255)
|
||||
GREEN = ( 0, 184, 0)
|
||||
|
||||
CURBING = [
|
||||
(136,20,0),
|
||||
(168,16,0),
|
||||
]
|
||||
|
||||
CENLINE = [
|
||||
(124,124,124),
|
||||
(188,188,188),
|
||||
]
|
||||
|
||||
MOUNTAINS = [
|
||||
(80,48,0),
|
||||
(172,124,0)
|
||||
]
|
||||
|
||||
# Set the height and width of the screen
|
||||
size = [512, 240]
|
||||
y0 = 112
|
||||
x0 = 256
|
||||
screen = pygame.display.set_mode(size)
|
||||
|
||||
pygame.display.set_caption("Example code for the draw module")
|
||||
|
||||
#Loop until the user clicks the close button.
|
||||
done = False
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
while not done:
|
||||
|
||||
# This limits the while loop to a max of 10 times per second.
|
||||
# Leave this out and we will use all CPU we can.
|
||||
clock.tick(10)
|
||||
|
||||
for event in pygame.event.get(): # User did something
|
||||
if event.type == pygame.QUIT: # If user clicked close
|
||||
done=True # Flag that we are done so we exit this loop
|
||||
|
||||
# All drawing code happens after the for loop and but
|
||||
# inside the main while done==False loop.
|
||||
|
||||
# Clear the screen and set the screen background
|
||||
screen.fill(BLUE)
|
||||
pygame.draw.rect(screen, GREEN, [0, y0, 512, 240-y0])
|
||||
|
||||
# draw the road
|
||||
for y in range(y0,240):
|
||||
i = y-y0
|
||||
rw = i*2
|
||||
cw = rw/4
|
||||
lw = rw/32
|
||||
z = 500.0/(i+1)
|
||||
curbcol = CURBING[int(z) % 2]
|
||||
cencol = CENLINE[int(z) % 2]
|
||||
if i < 16:
|
||||
cencol = BLACK #CENLINE[0]
|
||||
if i < 0:
|
||||
curbcol = BLACK #CURBING[0]
|
||||
pygame.draw.line(screen, BLACK, [x0-rw, y], [x0+rw, y], 1)
|
||||
pygame.draw.line(screen, curbcol, [x0-rw-cw, y], [x0-rw, y], 1)
|
||||
pygame.draw.line(screen, curbcol, [x0+rw, y], [x0+rw+cw, y], 1)
|
||||
pygame.draw.line(screen, cencol, [x0-rw/3-lw, y], [x0-rw/3+lw, y], 1)
|
||||
pygame.draw.line(screen, cencol, [x0+rw/3-lw, y], [x0+rw/3+lw, y], 1)
|
||||
|
||||
# draw mountains
|
||||
h1 = 1
|
||||
h2 = 2
|
||||
for x in range(0,512):
|
||||
pygame.draw.line(screen, MOUNTAINS[0], [x, y0-1], [x, y0-h1], 1)
|
||||
pygame.draw.line(screen, MOUNTAINS[1], [x, y0-1], [x, y0-h2], 1)
|
||||
if random.randint(0,8) > h1:
|
||||
h1 += 1
|
||||
elif h1 > 1:
|
||||
h1 -= 1
|
||||
if random.randint(0,6) > h2:
|
||||
h2 += 1
|
||||
elif h2 > 1:
|
||||
h2 -= 1
|
||||
|
||||
# Go ahead and update the screen with what we've drawn.
|
||||
# This MUST happen after all the other drawing commands.
|
||||
pygame.display.flip()
|
||||
|
||||
pygame.image.save(screen, 'road.png')
|
||||
|
||||
# Be IDLE friendly
|
||||
pygame.quit()
|
||||
Reference in New Issue
Block a user