#lang racket (require 2htdp/image racket/runtime-path (prefix-in g: racket/gui)) (provide (all-defined-out)) (struct configuration (sprite-size columns-count rows-count energy-bomb energy-fire energy-player energy-robot title)) (define default-configuration (configuration 32 15 10 10 4 30 30 "dynablaster")) (define (game-size columns-count rows-count) (struct-copy configuration default-configuration [columns-count columns-count] [rows-count rows-count])) (define-runtime-path sound-file "medias/explode.wav") (define-runtime-path grass-image-file "medias/grass.png") (define-runtime-path rock-image-file "medias/rock.png") (define-runtime-path brick-image-file "medias/brick.png") (define-runtime-path bomb1-image-file "medias/bomb1.png") (define-runtime-path bomb2-image-file "medias/bomb2.png") (define-runtime-path player-image-file "medias/player.png") (define-runtime-path robot-image-file "medias/robot.png") (define-runtime-path fire-h-r-image-file "medias/fire-h-r.png") (define-runtime-path fire-h-l-image-file "medias/fire-h-l.png") (define-runtime-path fire-v-d-image-file "medias/fire-v-d.png") (define-runtime-path fire-v-u-image-file "medias/fire-v-u.png") (define-runtime-path fire-h-image-file "medias/fire-h.png") (define-runtime-path fire-v-image-file "medias/fire-v.png") (define-runtime-path fire-c-image-file "medias/fire-c.png") (define IMAGE-EMPTY (rectangle 0 0 'solid 'green)) (define (load-image-png image-file) (make-object g:image-snip% (make-object g:bitmap% image-file 'png/mask))) (define IMAGE-GRASS (load-image-png grass-image-file)) (define IMAGE-ROCK (load-image-png rock-image-file)) (define IMAGE-BRICK (load-image-png brick-image-file)) (define IMAGES-BOMB (list (load-image-png bomb1-image-file) (load-image-png bomb2-image-file))) (define IMAGE-PLAYER (load-image-png player-image-file)) (define IMAGE-ROBOT (load-image-png robot-image-file))