first commit

This commit is contained in:
joren
2026-03-23 10:28:54 +01:00
commit 3abc9aae55
109 changed files with 2467 additions and 0 deletions

72
pp1/main.rkt Normal file
View File

@@ -0,0 +1,72 @@
(import (scheme base)
(scheme write)
(pp1 graphics))
;; 1. Configuration
#lang r7rs
(define tile-size 40)
(define wall-color "blue")
(define pellet-color "white")
(define pellet-size 10) ; Size of the dot
;; 2. Map Data (1 = Wall, 0 = Pellet)
(define map-data
'((1 1 1 1 1 1 1 1 1 1)
(1 0 0 0 0 0 0 0 0 1)
(1 0 1 1 0 0 1 1 0 1)
(1 0 1 1 0 0 1 1 0 1)
(1 0 0 0 0 0 0 0 0 1)
(1 0 1 1 1 1 1 1 0 1)
(1 0 0 0 0 0 0 0 0 1)
(1 1 1 1 1 1 1 1 1 1)))
;; 3. Setup Window
(define screen-width (* 10 tile-size))
(define screen-height (* 8 tile-size))
(define screen (make-window screen-width screen-height "PacMan"))
((screen 'set-background!) "black")
(define game-layer ((screen 'new-layer!)))
;; 4. Build Level Function
(define (build-level layer grid)
(let loop-y ((rows grid) (y 0))
(unless (null? rows)
(let loop-x ((cols (car rows)) (x 0))
(unless (null? cols)
(let ((val (car cols))
(tile (make-tile tile-size tile-size)[cite_start])) ; Create a fresh transparent tile [cite: 81]
(cond
;; CASE 1: WALL
((= val 1)
((tile 'draw-rectangle!) [cite_start]0 0 tile-size tile-size wall-color) [cite: 85]
((tile 'set-x!) (* x tile-size))
((tile 'set-y!) (* y tile-size))
((layer 'add-drawable!) [cite_start]tile)) [cite: 158]
;; CASE 2: PELLET (DOT)
((= val 0)
;; Calculate offset to center the dot
(let ((offset (/ (- tile-size pellet-size) 2)))
((tile 'draw-ellipse!) [cite_start]offset offset pellet-size pellet-size pellet-color) [cite: 86]
((tile 'set-x!) (* x tile-size))
((tile 'set-y!) (* y tile-size))
((layer 'add-drawable!) tile))))
(loop-x (cdr cols) (+ x 1))))
(loop-y (cdr rows) (+ y 1)))))
;; 5. Run it
(build-level game-layer map-data)
;; 6. Add Pacman (on top)
(generate-mask "/home/joren/Downloads/pp1/PacMan.bmp" "black") ; Ensure background color matches your image
(define pacman (make-bitmap-tile
"/home/joren/Downloads/pp1/PacMan.bmp"
"/home/joren/Downloads/pp1/PacMan_mask.png"))
;; Place Pacman at (1, 1)
((pacman 'set-x!) (* 1 tile-size))
((pacman 'set-y!) (* 1 tile-size))
((game-layer 'add-drawable!) pacman)