기타

[Scheme]신호등게임입니다

by 정체불명 posted Oct 08, 2010
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

No Attached Image

기타강좌에 올려둔 강좌 보시면 소스는 다 이해가 가실거라 보구요

소스도 함께 올려봅니다

빨간불이 아닐때에만 위로 가실수 있어요 무단횡단하면 게임끗;;


따라 만들어 보고 싶으시다면

우선 DrRacket다운로드부터 ㄱㄱ 나머지는 kty110490@naver.com으로 질문해주세요

아주아주 기초적인 질문도 가능!

#lang scheme

(require 2htdp/universe)

(require 2htdp/image)



(define 주인공 (bitmap "주인공.bmp"));소스와 같은 폴더에 주인공.bmp가있어야해요


(define 가로길이 300)

(define 세로길이 550) ;윗부분에 신호등 동그라미 출력 크기:반지름 10


(define 바탕 (empty-scene 가로길이 세로길이))


(define x 16)

(define y 500)

(define 불색깔 0)


;0은 초록 1은 주황 2는 빨강 능력된다면 3으로나눈 나머지를 사용하고 색깔 바꿀떈 그냥 1씩 더하자

;이말이 이해가 안간다면 어느 숫자든지 3으로 나눠보아라 0~2사이의 나머지가 나온다.

(define 색깔지속 10)

(define 시간초 0)

(define 이겼다 0);0은 게임중 1이면 이긴거고 2면 진거다.

(define 색깔변화 0)

(define 파란불 0)

(define 빨간불 0)

(define 주황불 0)


(define 켠파란불 (circle 10 "solid" "blue"))

(define 끈파란불 (circle 10 "outline" "blue"))

(define 켠주황불 (circle 10 "solid" "orange"))

(define 끈주황불 (circle 10 "outline" "orange"))

(define 켠빨간불 (circle 10 "solid" "red"))

(define 끈빨간불 (circle 10 "outline" "red"))



(define (체크 상태)

  (cond [(< y 20) (set! 이겼다 1)]

        [(<= 색깔지속 0) 

         (begin (set! 불색깔(+ 1 불색깔)) (begin (= (random 3) 0)  (set! 색깔지속 (if (= (modulo 불색깔 3) 1) (+ (random 56) 14) (random 56)))))]

        [(= (modulo 불색깔 3) 0) (begin (set! 파란불 1) (set! 빨간불 0))]

        [(= (modulo 불색깔 3) 1) (begin (set! 파란불 0) (set! 주황불 1))]

        [(= (modulo 불색깔 3) 2) (begin (set! 주황불 0) (set! 빨간불 1))]

       

        )#t)

(define (톡 상태)

  (set! 시간초 (+ 시간초 1))(set! 색깔지속 (- 색깔지속 1)) 상태) 


(define (키체크 상태 키)

  (cond [(and (= (modulo 불색깔 3) 2)(equal? 키 "up"))(set! 이겼다 2)]

        [(equal? 키 "up") (set! y (- y 3))]

        [(equal? 키 "down") (set! y (+ y 3))]) 상태);상태가 빨강불인데 키가 눌렀으면 GG

(define (그리기 상태)

  (cond [(= 이겼다 1)(place-image (text "이겼소" 12 "blue") 150 350 바탕)]

        [(= 이겼다 2)(place-image (text "졌다" 12 "blue") 150 350 바탕)]

        [else (place-image 주인공 x y (place-image/align (beside (if (= 파란불 1) 켠파란불 끈파란불) (if (= 주황불 1) 켠주황불 끈주황불) (if (= 빨간불 1) 켠빨간불 끈빨간불)) 150 350 "center" "center" 바탕))]))


(big-bang 0

          (on-tick 톡)

          (check-with 체크)

          (on-draw 그리기)

          (on-key 키체크))