;; The first three lines of this file were inserted by DrScheme. They record metadata ;; about the language level of this file in a form that our tools can easily process. #reader(lib "htdp-intermediate-lambda-reader.ss" "lang")((modname NickJamin) (read-case-sensitive #t) (teachpacks ((lib "master.ss" "teachpack" "htdp") (lib "draw.ss" "teachpack" "htdp") (lib "hangman.ss" "teachpack" "htdp") (lib "gui.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ((lib "master.ss" "teachpack" "htdp") (lib "draw.ss" "teachpack" "htdp") (lib "hangman.ss" "teachpack" "htdp") (lib "gui.ss" "teachpack" "htdp"))))) ;; get-choice: string, list of strings -> integer ;; the function displays a simple menu form with the given message ;; and a drop-down menu with the list of choices. The menu ;; initially displays "Make a choice". Once a different item is chosen, ;; that item is returned. ;; When a "Close" button is pressed, the form disappears. (define (get-choice message list-of-choices) (local ( (define the-choices (make-choice (cons "Make a choice" list-of-choices))) (define w (create-window (list (list (make-message message)) (list the-choices) (list (make-button "Close" (lambda (e) (hide-window w))))))) (define (process-result n) (cond [(> n 200) (hide-window w)] ;; timeout after 200 sec [(= (choice-index the-choices) 0) (and (sleep-for-a-while 1) (process-result (+ n 1)))] [else true]) ) ) (cond [(process-result 0) (list-ref list-of-choices (- (choice-index the-choices) 1))]))) ;; get-answer: string number -> string ;; The function displays a simple text input with a question ;; and returns the answer typed in by the user ;; The second parameter (delay) is the number of seconds ;; the function waits after the typing of the first character ;; before it returns the answer. If the user takes longer ;; than that, a partial answer may be returned ;; 5 sec delay is reasonable for a one-word answer (define (get-answer question delay) (local ((define the-answer (make-text question)) (define w (create-window (list (list the-answer) (list (make-button "Close" (lambda (e) (hide-window w))))))) (define (process-result n) (cond [(> n 6) (hide-window w)] ;; timeout after 200 sec [(string=? (text-contents the-answer) "") (and (sleep-for-a-while 1) (process-result (+ n 1)))] [else true] ;; the user starts typing ))) (cond [(process-result 0) (cond [(sleep-for-a-while delay) (text-contents the-answer)]) ]) )) (define character-name (get-answer "Welcome to the wonderful world of Pokamon! What is your name?" 7)) (start 400 400) ;We will probably be drawing people throughout our story, so let's define a function that draws a person. (define (draw-person x y body feet head) (and (draw-solid-rect (make-posn x y) 20 22 body) (draw-solid-rect (make-posn (+ x 1) (+ y 20)) 6 6 feet) (draw-solid-rect (make-posn (+ x 13) (+ y 20)) 6 6 feet) (draw-solid-disk (make-posn (+ x 10) (- y 5)) 10 head))) ;We will also want to be able to clear our person, so we define the following function: (define (clear-person x y) (and (draw-solid-rect (make-posn x y) 20 22 'white) (draw-solid-rect (make-posn (+ x 1) (+ y 20)) 6 6 'white) (draw-solid-rect (make-posn (+ x 13) (+ y 20)) 6 6 'white) (draw-solid-disk (make-posn (+ x 10) (- y 5)) 10 'white))) ;Here, we draw our professor and a table with Pokaballs. (and (draw-person 190 50 'gray 'black 'brown) (draw-solid-rect (make-posn 260 90) 60 20 'brown) (draw-solid-disk (make-posn 270 100) 7 'red) (draw-solid-disk (make-posn 290 100) 7 'red) (draw-solid-disk (make-posn 310 100) 7 'red) (draw-solid-line (make-posn 263 100) (make-posn 277 100) 'black) (draw-solid-line (make-posn 283 100) (make-posn 297 100) 'black) (draw-solid-line (make-posn 303 100) (make-posn 317 100) 'black) (draw-solid-disk (make-posn 270 100) 2 'gray) (draw-solid-disk (make-posn 290 100) 2 'gray) (draw-solid-disk (make-posn 310 100) 2 'gray)) ;Now, we want a person to walk up to our professor, so lets define a walkup function (define (walk-up1 YW clr1 clr2 how-far) (cond [(= YW how-far) (draw-person 190 how-far clr1 clr2 'brown)] [else (and (draw-person 190 YW clr1 clr2 'brown) (sleep-for-a-while .2) (clear-person 190 YW) (walk-up1 (- YW 22) clr1 clr2 how-far))])) (draw-person 190 365 'black 'red 'brown) (sleep-for-a-while 1) (walk-up1 365 'black 'red 145) (sleep-for-a-while 2) (define message22 (string-append "Professor Oke: Hey " character-name "! Choose your Pokamon!!!")) (define Poka-choices1 (list "Squartle" "Charmder" "Bulbasoar")) (define Poka-list1 (get-choice message22 Poka-choices1)) (sleep-for-a-while 1) (define message1 (string-append "Congratulations! You picked the Pokamon " Poka-list1 "! Would you like to give it a nickname?")) (define choices (list "Yes" "No")) (define Poka-nickname (cons (get-choice message1 choices) empty)) (define Poka-name (cond [(string=? "Yes" (first Poka-nickname)) (get-answer "What would you like to nickname your Pokamon?" 5)] [else Poka-list1] )) ;Now, we clear our screen and make a new one because of the popups that are now covering our old one (draw-solid-rect (make-posn 10 10) 380 380 'white) (sleep-for-a-while 1) (start 400 400) ;Now that we have chosen a pokamon, our character should have a pokaball attached to his waist, so we define a draw-ball function (define (draw-ball x y) (draw-solid-disk (make-posn (+ x 20) (+ y 13)) 3 'red)) (define (clear-ball x y) (draw-solid-disk (make-posn (+ x 20) (+ y 13)) 3 'white)) (and (draw-person 190 145 'black 'red 'brown) (draw-ball 190 145) ;our character, with a pokaball at his side (draw-person 190 50 'gray 'black 'brown) ;our professor (draw-solid-rect (make-posn 260 90) 60 20 'brown) ;a table (draw-solid-disk (make-posn 290 100) 7 'red) (draw-solid-disk (make-posn 310 100) 7 'red) ;two pokaballs on the table (draw-solid-line (make-posn 283 100) (make-posn 297 100) 'black) (draw-solid-line (make-posn 303 100) (make-posn 317 100) 'black) (draw-solid-disk (make-posn 290 100) 2 'gray) (draw-solid-disk (make-posn 310 100) 2 'gray) ;details of the pokaballs (sleep-for-a-while 1)) ;Now our person is gonna leave with his pokamon, so lets define a walk-down function (define (walk-down yw) (cond [(= yw 365) (and (draw-person 190 365 'black 'red 'brown) (draw-ball 190 365))] [else (and (draw-person 190 yw 'black 'red 'brown) (draw-ball 190 yw) (sleep-for-a-while .2) (clear-person 190 yw) (clear-ball 190 yw) (walk-down (+ yw 22)))])) (and (walk-down 145) (sleep-for-a-while 1) (clear-person 190 365) (clear-ball 190 365) (sleep-for-a-while 1) ;Now, we clear our screen and will draw a field, where we will have our first pokamon battle!!! (draw-solid-rect (make-posn 10 10) 380 380 'white) (draw-person 190 300 'black 'red 'brown) (draw-ball 190 300) (draw-solid-rect (make-posn 10 10) 380 120 'green) (draw-solid-line (make-posn 200 85) (make-posn 200 55) 'black) (draw-solid-line (make-posn 205 85) (make-posn 230 65) 'black) (draw-solid-line (make-posn 195 85) (make-posn 170 65) 'black) (draw-solid-line (make-posn 95 85) (make-posn 95 55) 'black) (draw-solid-line (make-posn 100 85) (make-posn 125 65) 'black) (draw-solid-line (make-posn 90 85) (make-posn 65 65) 'black) (draw-solid-line (make-posn 305 85) (make-posn 305 55) 'black) (draw-solid-line (make-posn 310 85) (make-posn 335 65) 'black) (draw-solid-line (make-posn 300 85) (make-posn 275 65) 'black) (sleep-for-a-while 1) (clear-person 190 300) (clear-ball 190 300) (draw-person 190 270 'black 'red 'brown) (draw-ball 190 270) (sleep-for-a-while .2) (clear-person 190 270) (clear-ball 190 270) (draw-person 190 250 'black 'red 'brown) (draw-ball 190 250) (sleep-for-a-while .2) (clear-person 190 250) (clear-ball 190 250) (draw-person 190 230 'black 'red 'brown) (draw-ball 190 230) (sleep-for-a-while .2) (clear-person 190 230) (clear-ball 190 230) (draw-person 190 210 'black 'red 'brown) (draw-ball 190 210) (sleep-for-a-while .2) (clear-person 190 210) (clear-ball 190 210) (draw-person 190 190 'black 'red 'brown) (draw-ball 190 190) (sleep-for-a-while .2) (clear-person 190 190) (clear-ball 190 190) (draw-person 190 170 'black 'red 'brown) (draw-ball 190 170) (sleep-for-a-while .2) (clear-person 190 170) (clear-ball 190 170) (draw-person 190 140 'black 'red 'brown) (draw-ball 190 140) (sleep-for-a-while .2) (clear-person 190 140) (clear-ball 190 140) (draw-person 190 115 'black 'red 'brown) (draw-ball 190 115) (sleep-for-a-while .2) (draw-solid-rect (make-posn 10 10) 380 120 'white) (clear-person 190 115) (clear-ball 190 115) (draw-solid-rect (make-posn 10 10) 380 120 'green) (draw-solid-line (make-posn 200 85) (make-posn 200 55) 'black) (draw-solid-line (make-posn 205 85) (make-posn 230 65) 'black) (draw-solid-line (make-posn 195 85) (make-posn 170 65) 'black) (draw-solid-line (make-posn 95 85) (make-posn 95 55) 'black) (draw-solid-line (make-posn 100 85) (make-posn 125 65) 'black) (draw-solid-line (make-posn 90 85) (make-posn 65 65) 'black) (draw-solid-line (make-posn 305 85) (make-posn 305 55) 'black) (draw-solid-line (make-posn 310 85) (make-posn 335 65) 'black) (draw-solid-line (make-posn 300 85) (make-posn 275 65) 'black) (draw-person 190 90 'black 'red 'brown) (draw-ball 190 90) (sleep-for-a-while 2) ;Next, we are going to initiate a battle, so we are turning the screen black. ) (define (box xp yp) (and (draw-solid-rect (make-posn xp yp) 50 50 'black) (cond [(= yp 0) (sleep-for-a-while .1)] [(= xp 350) (sleep-for-a-while .07)] [(or (= yp 350) (= xp 0)) (sleep-for-a-while .05)] [(= yp 50) (sleep-for-a-while .04)] [(or (= xp 300) (= yp 300)) (sleep-for-a-while .03)] [(or (= xp 50) (= yp 100)) (sleep-for-a-while .02)] [else (sleep-for-a-while .01)]) (cond [(and (= xp 150) (= yp 200)) true] [(and (= yp 0) (= xp 350)) (box 350 50)] [(= yp 0) (box (+ xp 50) 0)] [(and (= yp 350) (= xp 350)) (box 300 350)] [(= xp 350) (box 350 (+ yp 50))] [(and (= xp 0) (= yp 350)) (box 0 300)] [(= yp 350) (box (- xp 50) yp)] [(and (= xp 0) (= yp 50)) (box 50 50)] [(= xp 0) (box 0 (- yp 50))] [(and (= xp 300) (= yp 50)) (box 300 100)] [(= yp 50) (box (+ xp 50) 50)] [(and (= xp 300) (= yp 300)) (box 250 300)] [(= xp 300) (box 300 (+ yp 50))] [(and (= xp 50) (= yp 300)) (box 50 250)] [(= yp 300) (box (- xp 50) 300)] [(and (= xp 50) (= yp 100)) (box 100 100)] [(= xp 50) (box 50 (- yp 50))] [(and (= xp 250) (= yp 100)) (box 250 150)] [(= yp 100) (box (+ xp 50) 100)] [(and (= xp 250) (= yp 250)) (box 200 250)] [(= xp 250) (box 250 (+ yp 50))] [(and (= xp 100) (= yp 250)) (box 100 200)] [(= yp 250) (box (- xp 50) 250)] [(and (= xp 100) (= yp 200)) (box 100 150)] [(and (= xp 100) (= yp 150)) (box 150 150)] [(and (= xp 150) (= yp 150)) (box 200 150)] [(and (= xp 200) (= yp 150)) (box 200 200)] [(and (= xp 200) (= yp 200)) (box 150 200)] [else true]))) (box 0 0) (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 400 400 'white) ;Exiggcute (define (Exiggcute xx yy) ;middle left egg (and (draw-solid-disk (make-posn (- xx 40) (- yy 10)) 21 'pink) (draw-circle (make-posn (- xx 40) (- yy 10)) 21 'black) (draw-solid-disk (make-posn (- xx 47) (- yy 18)) 2 'black) (draw-solid-disk (make-posn (- xx 33) (- yy 18)) 2 'black) (draw-solid-line (make-posn (- xx 47) (- yy 5)) (make-posn (- xx 33) (- yy 5)) 'black) ;way right egg (draw-solid-disk (make-posn (+ xx 20) (+ yy 10)) 21 'pink) (draw-circle (make-posn (+ xx 20) (+ yy 10)) 21 'black) (draw-solid-disk (make-posn (+ xx 14) (+ yy 5)) 2 'black) (draw-solid-disk (make-posn (+ xx 26) (+ yy 5)) 2 'black) (draw-solid-line (make-posn (+ xx 14) (+ yy 17)) (make-posn (+ xx 26) (+ yy 17)) 'black) ;way left egg (draw-solid-disk (make-posn (- xx 50) (+ yy 20)) 21 'pink) (draw-circle (make-posn (- xx 50) (+ yy 20)) 21 'black) (draw-solid-disk (make-posn (- xx 57) (+ yy 12)) 2 'black) (draw-solid-disk (make-posn (- xx 43) (+ yy 12)) 2 'black) (draw-solid-line (make-posn (- xx 57) (+ yy 27)) (make-posn (- xx 43) (+ yy 27)) 'black) ;middle right egg (draw-solid-disk (make-posn xx (- yy 25)) 25 'pink) (draw-circle (make-posn xx (- yy 25)) 25 'black) (draw-solid-disk (make-posn (- xx 8) (- yy 33)) 2 'black) (draw-solid-disk (make-posn (+ xx 7) (- yy 33)) 2 'black) (draw-solid-line (make-posn (- xx 10) (- yy 43)) (make-posn (- xx 2) (- yy 35)) 'black) (draw-solid-line (make-posn (+ xx 2) (- yy 35)) (make-posn (+ xx 10) (- yy 43)) 'black) (draw-solid-line (make-posn (- xx 7) (- yy 20)) (make-posn (+ xx 7) (- yy 20)) 'black) ;Big Egg (draw-solid-disk (make-posn (- xx 10) (+ yy 20)) 30 'pink) (draw-circle (make-posn (- xx 10) (+ yy 20)) 30 'black) (draw-solid-disk (make-posn (- xx 20) (+ yy 10)) 3 'black) (draw-solid-disk (make-posn xx (+ yy 10)) 3 'black) (draw-solid-line (make-posn (- xx 20) yy) (make-posn (- xx 12) (+ yy 10)) 'black) (draw-solid-line (make-posn (- xx 8) (+ yy 10)) (make-posn xx yy) 'black) (draw-solid-line (make-posn (- xx 20) (+ yy 30)) (make-posn xx (+ yy 30)) 'black) ) ) (define (clear-Exiggcute xx yy) (and (draw-solid-disk (make-posn (- xx 10) (+ yy 20)) 30 'white) (draw-solid-disk (make-posn xx (- yy 25)) 25 'white) (draw-solid-disk (make-posn (- xx 50) (+ yy 20)) 21 'white) (draw-solid-disk (make-posn (+ xx 20) (+ yy 10)) 21 'white) (draw-solid-disk (make-posn (- xx 40) (- yy 10)) 21 'white))) (and (Exiggcute 360 100) (sleep-for-a-while .1) (clear-Exiggcute 360 100) (Exiggcute 340 100) (sleep-for-a-while .1) (clear-Exiggcute 340 100) (Exiggcute 320 100) (sleep-for-a-while .1) (clear-Exiggcute 320 100) (Exiggcute 300 100) (sleep-for-a-while .1) (clear-Exiggcute 300 100) (Exiggcute 280 100) (sleep-for-a-while .1) (clear-Exiggcute 280 100) (Exiggcute 260 100) (sleep-for-a-while .1) (clear-Exiggcute 260 100) (Exiggcute 250 100) (sleep-for-a-while 1.5) ) ;Here we will add text to go with our intense battle scene. (define message3 (string-append "Wild EXEGCUTE Appeared! " Poka-name ", I choose you!!")) (draw-solid-string (make-posn 20 20) message3) (sleep-for-a-while 2) ;Here we added the character throwing in a giant ball that the pokamon is inside of. (define (giant-pokaball X Y) (and (draw-solid-disk (make-posn X Y) 75 'red) (draw-solid-line (make-posn (- X 75) Y) (make-posn (+ X 75) Y) 'black) (draw-solid-disk (make-posn X Y) 15 'gray) ) ) (define (clear-giant-pokaball X Y) (draw-solid-disk (make-posn X Y) 75 'white)) (define (pokaball DNE) (and (giant-pokaball 320 320) (sleep-for-a-while .3) (clear-giant-pokaball 320 320) (giant-pokaball 300 300) (sleep-for-a-while .3) (clear-giant-pokaball 300 300) (giant-pokaball 280 280) (sleep-for-a-while .3) (clear-giant-pokaball 280 280) (giant-pokaball 260 260) (sleep-for-a-while .3) (clear-giant-pokaball 260 260) (giant-pokaball 240 280) (sleep-for-a-while .3) (clear-giant-pokaball 240 280) (giant-pokaball 220 300) (sleep-for-a-while .3) (clear-giant-pokaball 220 300) (giant-pokaball 200 320) (sleep-for-a-while .3) (clear-giant-pokaball 200 320) (giant-pokaball 180 300) (sleep-for-a-while .3) (clear-giant-pokaball 180 300) (giant-pokaball 160 280) (sleep-for-a-while .3) (clear-giant-pokaball 160 280) (giant-pokaball 140 300) (sleep-for-a-while .3) (clear-giant-pokaball 140 300) (giant-pokaball 120 320) (sleep-for-a-while 1) (clear-giant-pokaball 120 320))) (pokaball 0) ;Next we will draw each of our pokamon in detail, and we will have the pokamon that our user chose previously appear on the screen. ;Here is the squartle (define (Squartle POSX POSY) (and (draw-solid-disk (make-posn POSX (+ POSY 60)) 40 'brown) (draw-solid-rect (make-posn (- POSX 55) (+ POSY 40)) 120 15 'cyan) (draw-solid-rect (make-posn (- POSX 20) (+ POSY 87)) 17 43 'cyan) (draw-solid-rect (make-posn (+ POSX 15) (+ POSY 87)) 17 43 'cyan) (draw-solid-disk (make-posn (+ POSX 5) (+ POSY 65)) 35 'orange) (draw-solid-disk (make-posn (+ POSX 5) (+ POSY 10)) 25 'cyan) (draw-solid-line (make-posn (+ POSX 5) (+ POSY 41)) (make-posn (+ POSX 5) (+ POSY 80)) 'black) (draw-solid-line (make-posn (- POSX 20) (+ POSY 41)) (make-posn (+ POSX 30) (+ POSY 41)) 'black) (draw-solid-line (make-posn (- POSX 10) (+ POSY 65)) (make-posn (+ POSX 20) (+ POSY 65)) 'black) (draw-solid-line (make-posn (- POSX 10) (+ POSY 65)) (make-posn (- POSX 25) (+ POSY 53)) 'black) (draw-solid-line (make-posn (+ POSX 20) (+ POSY 65)) (make-posn (+ POSX 35) (+ POSY 53)) 'black) (draw-solid-line (make-posn (- POSX 10) (+ POSY 65)) (make-posn (- POSX 20) (+ POSY 85)) 'black) (draw-solid-line (make-posn (+ POSX 20) (+ POSY 65)) (make-posn (+ POSX 30) (+ POSY 85)) 'black) (draw-solid-line (make-posn (+ POSX 5) (+ POSY 80)) (make-posn (- POSX 2) (+ POSY 98)) 'black) (draw-solid-line (make-posn (+ POSX 5) (+ POSY 80)) (make-posn (+ POSX 12) (+ POSY 98)) 'black) (draw-solid-disk (make-posn (- POSX 3) (+ POSY 5)) 3 'black) (draw-solid-disk (make-posn (+ POSX 13) (+ POSY 5)) 3 'black) (draw-solid-line (make-posn (- POSX 3) (+ POSY 20)) (make-posn (+ POSX 13) (+ POSY 20)) 'black) (draw-solid-line (make-posn (- POSX 3) (- POSY 3)) (make-posn (+ POSX 3) (+ POSY 4)) 'black) (draw-solid-line (make-posn (+ POSX 13) (- POSY 3)) (make-posn (+ POSX 7) (+ POSY 4)) 'black))) ;(Squartle 120 260) ;here is charmder (define (CHARMDER posx1 posy1) (and (draw-solid-rect (make-posn (- posx1 25) (+ 45 posy1)) 50 70 'orange) (draw-solid-rect (make-posn (- posx1 50) (+ 55 posy1)) 100 20 'orange) (draw-solid-rect (make-posn (- posx1 30) (+ 115 posy1)) 20 30 'orange) (draw-solid-rect (make-posn (+ 10 posx1) (+ 115 posy1)) 20 30 'orange) (draw-solid-disk (make-posn posx1 (+ posy1 80)) 20 'yellow) (draw-solid-disk (make-posn posx1 (+ 23 posy1)) 25 'orange) (draw-solid-disk (make-posn (- posx1 8) (+ posy1 15)) 3 'black) (draw-solid-disk (make-posn (+ posx1 8) (+ posy1 15)) 3 'black) (draw-solid-line (make-posn (- posx1 8) (+ posy1 30)) (make-posn (+ posx1 8) (+ posy1 30)) 'black) (draw-solid-line (make-posn (- posx1 8) (+ posy1 7)) (make-posn (- posx1 2) (+ posy1 14)) 'black) (draw-solid-line (make-posn (+ posx1 8) (+ posy1 7)) (make-posn (+ posx1 2) (+ posy1 14)) 'black) )) ;(CHARMDER 125 250) ;and here is bulbasoar (define (BULBASOAR posx1 posy1) (and (draw-solid-rect (make-posn (- posx1 81) (+ posy1 7)) 39 27 'black) (draw-solid-rect (make-posn (- posx1 80) (+ posy1 8)) 37 25 'turquoise) (draw-solid-rect (make-posn (- posx1 30) (+ 17 posy1)) 23 18 'black) (draw-solid-rect (make-posn (- posx1 29) (+ 18 posy1)) 21 16 'turquoise) (draw-solid-disk (make-posn (- posx1 43) (- posy1 20)) 35 'green) (draw-solid-rect (make-posn (- posx1 48) (- posy1 60)) 10 20 'green) (draw-solid-rect (make-posn (- posx1 83) (- posy1 20)) 90 50 'turquoise) (draw-solid-rect (make-posn (- posx1 85) (+ 10 posy1)) 36 26 'black) (draw-solid-rect (make-posn (- posx1 85) (+ 10 posy1)) 35 25 'turquoise) (draw-solid-rect (make-posn (- posx1 34) (+ 20 posy1)) 21 16 'black) (draw-solid-rect (make-posn (- posx1 34) (+ 20 posy1)) 20 15 'turquoise) (draw-solid-disk (make-posn posx1 posy1) 28 'turquoise) (draw-solid-disk (make-posn (- posx1 10) (- posy1 2)) 3 'black) (draw-solid-disk (make-posn (+ posx1 10) (- posy1 2)) 3 'black) (draw-solid-line (make-posn (- posx1 8) (+ posy1 13)) (make-posn (+ posx1 10) (+ posy1 13)) 'black) (draw-solid-line (make-posn (- posx1 10) (- posy1 13)) (make-posn (- posx1 4) (- posy1 6)) 'black) (draw-solid-line (make-posn (+ posx1 10) (- posy1 13)) (make-posn (+ posx1 4) (- posy1 6)) 'black) )) ;(BULBASOAR 153 310) ;First, we send out our pokamon (cond [(string=? Poka-list1 "Bulbasoar") (BULBASOAR 153 310)] [(string=? Poka-list1 "Squartle") (Squartle 110 260)] [(string=? Poka-list1 "Charmder") (CHARMDER 125 250)]) ;Then our user gets to pick an attack (define battle-message (string-append "What attack should " Poka-name " use?")) (define attack-choices (cond [(string=? Poka-list1 "Bulbasoar") (list "Vine Whip" "Tackle" "Poison Powder" "Razor Leaf")] [(string=? Poka-list1 "Squartle") (list "Bubble" "Tail Whip" "Water Gun" "Tackle")] [(string=? Poka-list1 "Charmder") (list "Flamethrower" "Tackle" "Growl" "Ember")])) (sleep-for-a-while 1) (define atk (get-choice battle-message attack-choices)) (sleep-for-a-while 1) ;Here, we define each of our attacks ;Bulbasoar's attacks: ;vine whip (define (movement xtp ytp) (cond [(= ytp 220) (and (BULBASOAR xtp ytp) (sleep-for-a-while 1))] [else (and (BULBASOAR xtp ytp) (sleep-for-a-while .15) (draw-solid-rect (make-posn (- xtp 88) (- ytp 70)) 140 120 'white) (movement xtp (- ytp 15)))])) (define (vines xcoo ycoo) (cond [(= xcoo 252) (and (sleep-for-a-while 1) (draw-solid-rect (make-posn 107 100) 8 60 'white) (draw-solid-rect (make-posn 102 105) 152 5 'white))] [(not (= xcoo 107)) (and (draw-solid-rect (make-posn xcoo ycoo) 6 5 'green) (sleep-for-a-while .01) (vines (+ 5 xcoo) ycoo))] [(= ycoo 100) (vines (+ 5 xcoo) (+ ycoo 5))] [else (and (draw-solid-rect (make-posn 107 ycoo) 6 5 'green) (sleep-for-a-while .05) (vines xcoo (- ycoo 5)))])) (define (vine-whip ARBITRARy) (and (movement 153 310) (vines 107 160) (draw-solid-rect (make-posn 50 160) 300 125 'white) (BULBASOAR 153 310))) ;tackle (define (tackle xtt ytt) (cond [(= xtt 253) (and (sleep-for-a-while 1) (BULBASOAR 153 310))] [else (and (BULBASOAR xtt ytt) (sleep-for-a-while .1) (draw-solid-rect (make-posn (- xtt 88) (- ytt 70)) 140 120 'white) (tackle (+ xtt 10) (- ytt 15)))])) ;poisonpowder (define (poison-powder not-used) (and (draw-solid-disk (make-posn 110 230) 10 'purple) (sleep-for-a-while .3) (draw-solid-disk (make-posn 110 230) 10 'white) (draw-solid-disk (make-posn 120 200) 10 'purple) (sleep-for-a-while .3) (draw-solid-disk (make-posn 120 200) 10 'white) (draw-solid-disk (make-posn 135 170) 10 'purple) (sleep-for-a-while .3) (draw-solid-disk (make-posn 135 170) 10 'white) (draw-solid-disk (make-posn 170 150) 10 'purple) (sleep-for-a-while .3) (draw-solid-disk (make-posn 215 130) 10 'purple) (draw-solid-disk (make-posn 160 100) 10 'purple) (sleep-for-a-while .3) (draw-solid-disk (make-posn 255 105) 10 'purple) (draw-solid-disk (make-posn 230 60) 10 'purple) (sleep-for-a-while .3) (draw-solid-disk (make-posn 190 90) 10 'purple) (draw-solid-disk (make-posn 265 140) 10 'purple) (sleep-for-a-while 1) (draw-solid-disk (make-posn 215 130) 10 'white) (draw-solid-disk (make-posn 160 100) 10 'white) (draw-solid-disk (make-posn 255 105) 10 'white) (draw-solid-disk (make-posn 230 60) 10 'white) (draw-solid-disk (make-posn 190 90) 10 'white) (draw-solid-disk (make-posn 265 140) 10 'white) (draw-solid-disk (make-posn 170 150) 10 'white) )) ;razorleaf (define (leaves XL YL) (and (draw-solid-rect (make-posn XL YL) 20 20 'green) (draw-solid-rect (make-posn (+ 60 XL) (+ 20 YL)) 20 20 'green) (draw-solid-rect (make-posn (+ 20 XL) (+ YL 60)) 20 20 'green))) (define (clear-leaves XL1 YL1) (and (draw-solid-rect (make-posn XL1 YL1) 20 20 'white) (draw-solid-rect (make-posn (+ 60 XL1) (+ 20 YL1)) 20 20 'white) (draw-solid-rect (make-posn (+ 20 XL1) (+ YL1 60)) 20 20 'white))) (define (razor-leaf XL2 YL2) (and (leaves XL2 YL2) (sleep-for-a-while .1) (clear-leaves XL2 YL2) (cond [(= XL2 250) true] [else (razor-leaf (+ 10 XL2) (- YL2 10))]))) ;Squartles attacks: ;bubble (define (attack-bubble x1 y1) (and (draw-solid-disk (make-posn (+ 5 x1) (- y1 70)) 15 'blue) (sleep-for-a-while .5) (draw-solid-disk (make-posn (+ x1 60) (- y1 50)) 10 'blue) (sleep-for-a-while .5) (draw-solid-disk (make-posn (+ x1 95) (- y1 90)) 22 'blue) (sleep-for-a-while .5) (draw-solid-disk (make-posn (+ x1 80) (- y1 170)) 18 'blue) (sleep-for-a-while .5) (draw-solid-disk (make-posn (+ x1 160) (- y1 150)) 12 'blue) (sleep-for-a-while .5) (draw-solid-disk (make-posn (+ x1 130) (- y1 220)) 17 'blue) (sleep-for-a-while 1) (draw-solid-disk (make-posn (+ 5 x1) (- y1 70)) 15 'white) (draw-solid-disk (make-posn (+ x1 60) (- y1 50)) 10 'white) (draw-solid-disk (make-posn (+ x1 95) (- y1 90)) 22 'white) (draw-solid-disk (make-posn (+ x1 80) (- y1 170)) 18 'white) (draw-solid-disk (make-posn (+ x1 160) (- y1 150)) 12 'white) (draw-solid-disk (make-posn (+ x1 130) (- y1 220)) 17 'white))) ;tackle (define (ttackle xstt ystt) (cond [(= xstt 220) (and (sleep-for-a-while 1) (Squartle 110 260))] [else (and (Squartle xstt ystt) (sleep-for-a-while .1) (draw-solid-rect (make-posn (- xstt 70) (- ystt 30)) 140 200 'white) (ttackle (+ xstt 10) (- ystt 12)))])) ;watergun (define (wgun1 xst yst) (cond [(= yst 90) (Squartle xst yst)] [else (and (Squartle xst yst) (sleep-for-a-while .1) (draw-solid-rect (make-posn (- xst 70) (- yst 30)) 140 200 'white) (wgun1 (- xst 3) (- yst 17)))])) (define (wgun2 XWG YWG) (cond [(= XWG 390) true] [else (and (draw-solid-rect (make-posn XWG YWG) 10 20 'blue) (sleep-for-a-while .05) (wgun2 (+ XWG 10) YWG))])) (define (wgun3 xwg ywg) (cond [(= xwg 390) (and (sleep-for-a-while 1) (draw-solid-rect (make-posn 20 70) 140 200 'white) (Squartle 110 260))] [(= xwg 110) (and (Squartle 80 90) (draw-solid-rect (make-posn xwg ywg) 10 20 'white) (sleep-for-a-while .05) (wgun3 (+ xwg 10) ywg))] [else (and (draw-solid-rect (make-posn xwg ywg) 10 20 'white) (sleep-for-a-while .05) (wgun3 (+ xwg 10) ywg))])) ;tail whip (define (tail-whip NA) (and (Squartle 110 260) (sleep-for-a-while .5) (draw-solid-rect (make-posn 20 230) 180 200 'white) (Squartle 130 260) (sleep-for-a-while .5) (draw-solid-rect (make-posn 20 230) 180 200 'white) (Squartle 90 260) (sleep-for-a-while .5) (draw-solid-rect (make-posn 20 230) 180 200 'white) (Squartle 130 260) (sleep-for-a-while .5) (draw-solid-rect (make-posn 40 230) 180 200 'white) (Squartle 110 260) (sleep-for-a-while 2) (draw-solid-rect (make-posn 175 50) 150 110 'white))) ;Charmders attacks ;tackle (define (ctackle xb yb) (cond [(= xb 255) (and (sleep-for-a-while 1) (CHARMDER 125 250))] [else (and (CHARMDER xb yb) (sleep-for-a-while .1) (draw-solid-rect (make-posn (- xb 50) (- yb 20)) 140 200 'white) (ctackle (+ xb 10) (- yb 15)))])) ;ember (define (ember XL YL) (and (draw-solid-rect (make-posn 150 225) 20 20 'red);first little flame (sleep-for-a-while .5) (draw-solid-rect (make-posn 175 200) 20 20 'red) (sleep-for-a-while .5) (draw-solid-rect (make-posn 200 175) 20 20 'red) (sleep-for-a-while .8) (draw-solid-rect (make-posn 250 125) 40 40 'red);right flame (draw-solid-rect (make-posn 175 125) 40 40 'red);left flame (draw-solid-rect (make-posn 217 100) 31 65 'red);middle flame (draw-solid-rect (make-posn 225 110) 15 45 'yellow);middle flame (draw-solid-rect (make-posn 185 135) 20 20 'yellow);left flame (draw-solid-rect (make-posn 260 135) 20 20 'yellow);right flame (sleep-for-a-while 2) (draw-solid-rect (make-posn 150 225) 20 20 'white) (draw-solid-rect (make-posn 175 200) 20 20 'white) (draw-solid-rect (make-posn 200 175) 20 20 'white) (draw-solid-rect (make-posn 250 125) 40 40 'white) (draw-solid-rect (make-posn 175 125) 40 40 'white) (draw-solid-rect (make-posn 217 100) 31 65 'white))) ;flamethrower (define (flamethrower-move XF YF) (cond [(= YF 70) (CHARMDER 62 70)] [else (and (CHARMDER XF YF) (sleep-for-a-while .2) (draw-solid-rect (make-posn (- XF 50) (- YF 20)) 140 200 'white) (flamethrower-move (- XF 7) (- YF 20)))])) (define (flamethrower xF yF flame-color) (cond [(= xF 342) (sleep-for-a-while .1)] [(> xF 244) (and (draw-solid-rect (make-posn xF (- yF 40)) 60 100 flame-color) (sleep-for-a-while .07) (flamethrower (+ 10 xF) yF flame-color))] [(> xF 184) (and (draw-solid-rect (make-posn xF (- yF 30)) 60 80 flame-color) (sleep-for-a-while .05) (flamethrower (+ 10 xF) yF flame-color))] [(> xF 142) (and (draw-solid-rect (make-posn xF (- yF 20)) 60 60 flame-color) (sleep-for-a-while .04) (flamethrower (+ 10 xF) yF flame-color))] [(> xF 100) (and (draw-solid-rect (make-posn xF (- yF 10)) 60 40 flame-color) (sleep-for-a-while .03) (flamethrower (+ 10 xF) yF flame-color))] [else (and (draw-solid-rect (make-posn xF yF) 60 20 flame-color) (sleep-for-a-while .02) (flamethrower (+ 10 xF) yF flame-color))])) ;growl (define (growl n) (and (cond [(= n 7) (CHARMDER 125 250)] [(odd? n) (and (draw-solid-line (make-posn 140 275) (make-posn 160 250) 'black) (draw-solid-line (make-posn 145 275) (make-posn 170 260) 'black) (draw-solid-line (make-posn 145 278) (make-posn 175 273) 'black) (sleep-for-a-while .8) (growl (+ 1 n)))] [(even? n) (and (draw-solid-line (make-posn 140 275) (make-posn 160 250) 'white) (draw-solid-line (make-posn 145 275) (make-posn 170 260) 'white) (draw-solid-line (make-posn 145 278) (make-posn 175 273) 'white) (CHARMDER 125 250) (sleep-for-a-while .8) (growl (+ 1 n)))]) (draw-solid-disk (make-posn 250 100) 30 'yellow) (sleep-for-a-while .5) (draw-solid-disk (make-posn 250 100) 80 'orange) (sleep-for-a-while .5) (draw-solid-disk (make-posn 250 100) 150 'red) (sleep-for-a-while .5))) (cond [(string=? Poka-list1 "Bulbasoar") (cond [(string=? atk "Tackle") (tackle 153 310)] [(string=? atk "Razor Leaf") (razor-leaf 150 170)] [(string=? atk "Poison Powder") (poison-powder 0)] [else (vine-whip 0)])] [(string=? Poka-list1 "Squartle") (cond [(string=? atk "Bubble") (attack-bubble 130 300)] [(string=? atk "Tackle") (ttackle 110 260)] [(string=? atk "Tail Whip") (tail-whip 0)] [else (and (wgun1 110 260) (sleep-for-a-while 1) (wgun2 90 100) (wgun3 90 100))])] [else (cond [(string=? atk "Ember") (ember 125 250)] [(string=? atk "Tackle") (ctackle 125 250)] [(string=? atk "Growl") (and (growl 1) (sleep-for-a-while 1) (draw-solid-disk (make-posn 250 100) 150 'white))] [else (and (flamethrower-move 125 250) (sleep-for-a-while 1) (flamethrower 62 80 'red) (flamethrower 62 80 'white) (draw-solid-rect (make-posn 10 40) 150 200 'white) (CHARMDER 125 250))])]) (sleep-for-a-while 1) (draw-solid-rect (make-posn 10 5) 400 45 'white) (sleep-for-a-while 1) (define message4 (string-append "Wild EXEGCUTE Fainted! " Poka-name " gained 417 exp points!")) (draw-solid-string (make-posn 20 20) message4) (sleep-for-a-while 4) (draw-solid-rect (make-posn 10 5) 400 45 'white) (define message5 (string-append Poka-name " grew to level 60!")) (draw-solid-string (make-posn 20 20) message5) (sleep-for-a-while 3) (draw-solid-rect (make-posn 0 0) 400 400) (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 400 400 'white) (define (start-to-evolve DNE) (cond [(string=? Poka-list1 "Bulbasoar") (BULBASOAR 220 200)] [(string=? Poka-list1 "Squartle") (Squartle 200 150)] [(string=? Poka-list1 "Charmder") (CHARMDER 200 150)])) (start-to-evolve 0) (sleep-for-a-while 1) (define message6 (string-append "What? " Poka-name " is evolving!")) (draw-solid-string (make-posn 50 310) message6) (sleep-for-a-while 3) ;Now, we define our evolved pokamon ;Blastois (define (BLASTOIS PX PY) (and (draw-solid-disk (make-posn PX (+ PY 60)) 45 'brown) (draw-solid-rect (make-posn (- PX 43) PY) 15 30 'gray) (draw-solid-rect (make-posn (- PX 45) (+ PY 20)) 25 17 'brown) (draw-solid-rect (make-posn (+ PX 30) PY) 15 30 'gray) (draw-solid-rect (make-posn (+ PX 25) (+ PY 20)) 22 17 'brown) (draw-solid-rect (make-posn (- PX 60) (+ PY 40)) 130 20 'blue);head (draw-solid-rect (make-posn (- PX 25) (+ PY 87)) 20 43 'blue);left leg (draw-solid-rect (make-posn (+ PX 15) (+ PY 87)) 20 43 'blue);right leg (draw-solid-disk (make-posn (+ PX 5) (+ PY 65)) 40 'orange) (draw-solid-disk (make-posn PX (+ PY 5)) 25 'blue) (draw-solid-line (make-posn (- PX 30) (+ PY 55)) (make-posn (+ PX 40) (+ PY 55)) 'black) (draw-solid-line (make-posn (- PX 30) (+ PY 57)) (make-posn (+ PX 40) (+ PY 57)) 'black) (draw-solid-line (make-posn (- PX 30) (+ PY 75)) (make-posn (+ PX 40) (+ PY 75)) 'black) (draw-solid-line (make-posn (- PX 30) (+ PY 73)) (make-posn (+ PX 40) (+ PY 73)) 'black) (draw-solid-line (make-posn (- PX 25) (+ PY 92)) (make-posn (+ PX 35) (+ PY 92)) 'black) (draw-solid-line (make-posn (- PX 25) (+ PY 90)) (make-posn (+ PX 35) (+ PY 90)) 'black) (draw-solid-disk (make-posn (- PX 3) (+ PY 5)) 3 'black) (draw-solid-disk (make-posn (+ PX 13) (+ PY 5)) 3 'black) (draw-solid-line (make-posn (- PX 3) (+ PY 20)) (make-posn (+ PX 13) (+ PY 20)) 'black) (draw-solid-line (make-posn (- PX 3) (- PY 3)) (make-posn (+ PX 3) (+ PY 4)) 'black) (draw-solid-line (make-posn (+ PX 13) (- PY 3)) (make-posn (+ PX 7) (+ PY 4)) 'black) (draw-solid-rect (make-posn (- PX 28) (+ PY 123)) 10 7 'gray);left toe (draw-solid-rect (make-posn (+ PX 28) (+ PY 123)) 10 7 'gray)));right toe ;(BLASTOIS 100 250) ;Venasoar (define (VENASOAR posx2 posy2) (and (draw-solid-rect (make-posn (- posx2 45) (+ posy2 75)) 25 25 'blue) (draw-solid-rect (make-posn (- posx2 55) (+ posy2 75)) 25 45 'blue);left front leg (draw-solid-rect (make-posn (- posx2 57) (+ posy2 112)) 10 10 'gray) (draw-solid-rect (make-posn (- posx2 38) (+ posy2 112)) 10 10 'gray) (draw-solid-rect (make-posn (- posx2 55) (+ posy2 25)) 40 40 'blue);left back leg (draw-solid-rect (make-posn (- posx2 58) (+ posy2 60)) 9 9 'gray) (draw-solid-rect (make-posn (- posx2 45) (+ posy2 20)) 40 75 'blue) (draw-solid-rect (make-posn (+ posx2 60) (+ posy2 65)) 25 55 'blue);right leg (draw-solid-rect (make-posn (+ posx2 60) (+ posy2 60)) 20 55 'blue) (draw-solid-rect (make-posn (+ posx2 77) (+ posy2 112)) 10 10 'gray) (draw-solid-rect (make-posn (+ posx2 58) (+ posy2 112)) 10 10 'gray) (draw-solid-rect (make-posn (+ posx2 40) (+ posy2 20)) 35 55 'blue) (draw-solid-rect (make-posn (+ posx2 50) (+ posy2 70)) 35 25 'blue) (draw-solid-disk (make-posn (+ posx2 20) (+ posy2 75)) 40 'blue) (draw-circle (make-posn (+ posx2 20) (+ posy2 75)) 40 'black) (draw-solid-rect (make-posn (- posx2 40) posy2) 119 30 'green);green leaf (draw-solid-rect (make-posn (- posx2 10) (+ posy2 18)) 60 40 'green);green leaf (draw-solid-rect (make-posn (- posx2 10) posy2) 20 17 'red);red flower (draw-solid-rect (make-posn (+ posx2 23) (+ posy2 18)) 20 17 'red);red flower (draw-solid-rect (make-posn (+ posx2 32) posy2) 20 17 'red);;red flower (draw-solid-rect (make-posn posx2 (+ posy2 18)) 20 17 'red);red flower (draw-solid-rect (make-posn (+ posx2 10) (- posy2 18)) 22 17 'red);red flower (draw-solid-disk (make-posn (+ posx2 20) (+ posy2 7)) 10 'yellow) (draw-solid-disk (make-posn (+ posx2 20) (+ posy2 7)) 4 'black) (draw-solid-disk (make-posn (+ posx2 20) (+ posy2 33)) 5 'green) (draw-solid-line (make-posn (- posx2 46) (+ posy2 75)) (make-posn (- posx2 46) (+ posy2 40)) 'black) (draw-solid-disk (make-posn (+ posx2 5) (+ posy2 75)) 4 'black) (draw-solid-disk (make-posn (+ posx2 30) (+ posy2 75)) 4 'black) (draw-solid-line (make-posn (+ posx2 5) (+ posy2 63)) (make-posn (+ posx2 15) (+ posy2 70)) 'black) (draw-solid-line (make-posn (+ posx2 20) (+ posy2 70)) (make-posn (+ posx2 30) (+ posy2 63)) 'black) (draw-solid-line (make-posn (+ posx2 5) (+ posy2 95)) (make-posn (+ posx2 30) (+ posy2 95)) 'black))) ;(VENASOAR 100 250) ;Charzard (define (CHARZARD posx posy ColoR) (and (draw-solid-rect (make-posn (- posx 100) posy) 200 80 'orange) (draw-solid-rect (make-posn (- posx 90) (+ posy 10)) 180 70 'blue) (draw-solid-rect (make-posn (- posx 40) posy) 80 30 ColoR) (draw-solid-rect (make-posn (- posx 35) (+ 25 posy)) 70 90 'orange) (draw-solid-rect (make-posn (- posx 75) (+ 45 posy)) 150 30 'orange) (draw-solid-rect (make-posn (- posx 40) (+ 115 posy)) 30 50 'orange) (draw-solid-rect (make-posn (+ 10 posx) (+ 115 posy)) 30 50 'orange) (draw-solid-disk (make-posn posx (+ posy 75)) 27 'yellow) (draw-solid-disk (make-posn posx posy) 35 'orange) (draw-solid-rect (make-posn (- posx 25) (- posy 40)) 15 20 'orange) (draw-solid-rect (make-posn (+ posx 13) (- posy 40)) 15 20 'orange) (draw-solid-line (make-posn (- posx 20) (+ 10 posy)) (make-posn (+ posx 20) (+ 10 posy)) 'black) (draw-solid-disk (make-posn (+ posx 13) (- posy 10)) 5 'black) (draw-solid-disk (make-posn (- posx 13) (- posy 10)) 5 'black) (draw-solid-line (make-posn (- posx 18) (- posy 20)) (make-posn (- posx 5) (- posy 15)) 'black) (draw-solid-line (make-posn (+ posx 18) (- posy 20)) (make-posn (+ posx 5) (- posy 15)) 'black))) ;(CHARZARD 115 210 'white) ;Now, we have our evolution functions (define (NEW-FORM NOT-used) (cond [(string=? Poka-list1 "Bulbasoar") (VENASOAR 200 130)] [(string=? Poka-list1 "Squartle") (BLASTOIS 200 150)] [(string=? Poka-list1 "Charmder") (CHARZARD 200 120 'white)])) (define (EVOLVE N) (cond [(= 15 N) true] [else (and (sleep-for-a-while .1) (draw-solid-rect (make-posn 0 0) 400 295 'white) (start-to-evolve 0) (sleep-for-a-while .1) (draw-solid-rect (make-posn 0 0) 400 295 'white) (NEW-FORM 0) (EVOLVE (+ N 1)))])) (EVOLVE 0) (sleep-for-a-while 2) (define new-name (cond [(string=? Poka-list1 "Bulbasoar") "Venasoar"] [(string=? Poka-list1 "Squartle") "Blastois"] [(string=? Poka-list1 "Charmder") "Charzard"])) (draw-solid-rect (make-posn 40 295) 360 90 'white) (sleep-for-a-while 2) (define message7 (string-append Poka-name " evolved into " new-name "!")) (draw-solid-string (make-posn 50 310) message7) (sleep-for-a-while 3) ;Now we draw our person in the grass again, and our professor talking to our character (and (draw-solid-rect (make-posn 0 0) 400 400 'white) (draw-solid-rect (make-posn 10 10) 380 120 'green) (draw-solid-line (make-posn 200 85) (make-posn 200 55) 'black) (draw-solid-line (make-posn 205 85) (make-posn 230 65) 'black) (draw-solid-line (make-posn 195 85) (make-posn 170 65) 'black) (draw-solid-line (make-posn 95 85) (make-posn 95 55) 'black) (draw-solid-line (make-posn 100 85) (make-posn 125 65) 'black) (draw-solid-line (make-posn 90 85) (make-posn 65 65) 'black) (draw-solid-line (make-posn 305 85) (make-posn 305 55) 'black) (draw-solid-line (make-posn 310 85) (make-posn 335 65) 'black) (draw-solid-line (make-posn 300 85) (make-posn 275 65) 'black) (draw-person 190 90 'black 'red 'brown) (draw-ball 190 90) (sleep-for-a-while 2) (walk-up1 365 'gray 'black 145) (sleep-for-a-while 1)) (define npkmn-name (cond [(not (string=? "Yes" (first Poka-nickname))) (cond [(string=? Poka-list1 "Bulbasoar") "Venasoar"] [(string=? Poka-list1 "Squartle") "Blastois"] [(string=? Poka-list1 "Charmder") "Charzard"])] [else Poka-name])) (define message8 (string-append "Wow " character-name "! Your " npkmn-name " sure looks strong!")) ;Next, we will have our character walk up to his final battle! (and (draw-solid-string (make-posn 10 350) message8) (sleep-for-a-while 3) (draw-solid-string (make-posn 10 375) "You should challenge the Elite Four!") (sleep-for-a-while 4) (draw-solid-rect (make-posn 0 0) 400 400) (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 400 400 'white) (draw-solid-rect (make-posn 0 0) 100 400) (draw-solid-rect (make-posn 300 0) 100 400)) (define (draw-stairs k) (cond [(= k 40) true] [else (and (draw-solid-line (make-posn 100 (* 10 k)) (make-posn 300 (* k 10))) (draw-stairs (+ k 1)))])) (define (walk-up2 Y) (cond [(= Y -14) (and (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 400 400) (sleep-for-a-while 2) (draw-solid-rect (make-posn 0 0) 400 400 'white))] [else (and (draw-person 190 Y 'black 'red 'brown) (draw-ball 190 Y) (sleep-for-a-while .2) (clear-person 190 Y) (clear-ball 190 Y) (draw-stairs 0) (walk-up2 (- Y 22)))])) (and (draw-stairs 0) (walk-up2 360) (draw-circle (make-posn 200 0) 200 'black) (draw-solid-rect (make-posn 170 195) 60 30 'white) (draw-person 190 135 'black 'black 'brown) (sleep-for-a-while 1)) (define (walkup3 YD) (cond [(= YD 210) true] [else (and (clear-person 190 (+ 30 YD)) (clear-ball 190 (+ 30 YD)) (draw-person 190 YD 'black 'red 'brown) (draw-ball 190 YD) (sleep-for-a-while .2) (walkup3 (- YD 30)))])) (walkup3 360) (sleep-for-a-while 2) (define message9 (string-append "Lance: You've come far " character-name ".")) (and (draw-solid-string (make-posn 10 350) message9) (sleep-for-a-while 3) (draw-solid-string (make-posn 20 375) " Let's see if you can beat me.") (sleep-for-a-while 3) (box 0 0) (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 400 400 'white)) ;Here, we will define Lance's pokamon, Dragonight ;Dragonight (define (DRAGONIGHT Px Py white-or-black) (and (draw-solid-rect (make-posn (- Px 45) Py) 140 50 'orange) (draw-solid-rect (make-posn (- Px 40) (+ Py 5)) 130 45 'cyan) (draw-solid-rect (make-posn (+ Px 5) Py) 40 50 white-or-black);;;;;;;;;;;;;;;;;;;;;; (draw-solid-rect (make-posn (+ Px 15) Py) 20 40 'orange);neck (draw-solid-rect (make-posn (- Px 5) (+ Py 25)) 60 75 'orange);body (draw-solid-disk (make-posn (+ Px 25) (+ Py 25)) 15 'orange);part of the neck (draw-solid-rect (make-posn (- Px 20) (+ Py 25)) 45 15 'orange);start of left arm (draw-solid-disk (make-posn (+ Px 30) (+ Py 63)) 40 'tan);stomache2 (draw-solid-rect (make-posn (+ Px 38) (+ Py 20)) 17 75 'orange);rectangle that takes out the gray part of the circle (draw-solid-rect (make-posn (- Px 15) (- Py 43)) 25 5 'orange);left antenna (draw-solid-rect (make-posn (+ Px 10) (- Py 43)) 5 15 'orange);left antenna (draw-solid-rect (make-posn (- Px 15) (- Py 58)) 5 20 'orange);left antenna (draw-solid-rect (make-posn (+ Px 55) (+ Py 20)) 20 30 'cyan);covers the circle in cyan on the right wing (draw-solid-rect (make-posn (+ Px 55) (+ Py 50)) 20 50 white-or-black);covers the circle in white on the right side (draw-solid-rect (make-posn (- Px 20) (+ Py 50)) 15 60 white-or-black);whites out the gray part of the circle (draw-circle (make-posn Px Py) 16 'black);outline of nose (draw-solid-disk (make-posn (+ Px 20) (- Py 15)) 25 'orange);head (draw-circle (make-posn (+ Px 20) (- Py 15)) 25 'black);outline of head (draw-solid-disk (make-posn Px Py) 15 'orange);nose (draw-solid-rect (make-posn (+ Px 55) (+ Py 25)) 20 15 'orange);right arm (draw-solid-rect (make-posn (- Px 22) (+ Py 23)) 7 3 'white);top left nail (draw-solid-rect (make-posn (- Px 22) (+ Py 29)) 7 3 'white);middle left nail (draw-solid-rect (make-posn (- Px 22) (+ Py 36)) 7 3 'white);bottom left nail (draw-solid-rect (make-posn (+ Px 70) (+ Py 23)) 7 3 'white);top right nail (draw-solid-rect (make-posn (+ Px 70) (+ Py 29)) 7 3 'white);middle right nail (draw-solid-rect (make-posn (+ Px 70) (+ Py 36)) 7 3 'white);bottom right nail (draw-solid-rect (make-posn (+ Px 55) (+ Py 70)) 40 25 'orange);beginning of the tail (draw-solid-rect (make-posn (+ Px 65) (+ Py 75)) 40 25 'orange);part of the tail (draw-solid-rect (make-posn (- Px 10) (+ Py 95)) 20 25 'orange);left leg (draw-solid-rect (make-posn (- Px 12) (+ Py 115)) 7 7 'gray);left leg left toe (draw-solid-rect (make-posn (+ Px 5) (+ Py 115)) 7 7 'gray);left leg right toe (draw-solid-rect (make-posn (+ Px 45) (+ Py 95)) 20 25 'orange);right leg (draw-solid-line (make-posn (+ Px 65) (+ Py 95)) (make-posn (+ Px 65) (+ Py 115)) 'black) (draw-solid-rect (make-posn (+ Px 45) (+ Py 115)) 7 7 'gray);left leg left toe (draw-solid-rect (make-posn (+ Px 60) (+ Py 115)) 7 7 'gray);left leg right toe (draw-solid-line (make-posn (+ Px 65) (+ Py 95)) (make-posn (+ Px 55) (+ Py 80)) 'black) (draw-solid-rect (make-posn (+ Px 66) (+ Py 90)) 39 10 'tan) (draw-solid-rect (make-posn (+ Px 90) (+ Py 60)) 30 20 'orange);tail (draw-solid-rect (make-posn (+ Px 110) (+ Py 50)) 20 15 'orange);tail (draw-solid-rect (make-posn (+ Px 120) (+ Py 40)) 10 15 'orange);tail (draw-solid-disk (make-posn (+ Px 5) (- Py 25)) 4 'black);left eye (draw-solid-disk (make-posn (+ Px 25) (- Py 25)) 4 'black);right eye (draw-solid-line (make-posn (+ Px 3) (- Py 38)) (make-posn (+ Px 13) (- Py 28)) 'black) (draw-solid-line (make-posn (+ Px 17) (- Py 28)) (make-posn (+ Px 27) (- Py 38)) 'black) (draw-solid-line (make-posn (- Px 5) (+ Py 11)) (make-posn (- Px 1) (+ Py 8)) 'black) (draw-solid-line (make-posn (- Px 10) (+ Py 11)) (make-posn (- Px 12) (+ Py 8)) 'black) (draw-solid-line (make-posn (+ Px 12) (+ Py 10)) (make-posn (+ Px 22) (+ Py 4)) 'black) (draw-solid-rect (make-posn (+ Px 33) (- Py 43)) 25 5 'orange);right antenna (draw-solid-rect (make-posn (+ Px 33) (- Py 43)) 5 15 'orange);right antenna (draw-solid-rect (make-posn (+ Px 58) (- Py 58)) 5 20 'orange);right antenna (draw-solid-line (make-posn (- Px 5) (+ Py 50)) (make-posn (+ Px 35) (+ Py 50)) 'black);black lines on his stomache (draw-solid-line (make-posn (- Px 5) (+ Py 60)) (make-posn (+ Px 35) (+ Py 60)) 'black) (draw-solid-line (make-posn (- Px 5) (+ Py 70)) (make-posn (+ Px 35) (+ Py 70)) 'black) (draw-solid-line (make-posn (- Px 5) (+ Py 80)) (make-posn (+ Px 35) (+ Py 80)) 'black) (draw-solid-line (make-posn (+ Px 1) (+ Py 90)) (make-posn (+ Px 35) (+ Py 88)) 'black) (draw-solid-line (make-posn (+ Px 15) (+ Py 100)) (make-posn (+ Px 44) (+ Py 95)) 'black) (draw-solid-line (make-posn (- Px 2) (+ Py 40)) (make-posn (+ Px 35) (+ Py 40)) 'black) (draw-solid-line (make-posn (+ Px 10) (+ Py 30)) (make-posn (+ Px 35) (+ Py 30)) 'black) (draw-solid-line (make-posn (+ Px 75) (+ Py 90)) (make-posn (+ Px 65) (+ Py 99)) 'black);black lines on his tail (draw-solid-line (make-posn (+ Px 95) (+ Py 90)) (make-posn (+ Px 85) (+ Py 99)) 'black) (draw-solid-line (make-posn (+ Px 85) (+ Py 90)) (make-posn (+ Px 75) (+ Py 99)) 'black) (draw-solid-line (make-posn (+ Px 103) (+ Py 90)) (make-posn (+ Px 95) (+ Py 99)) 'black))) (define (Drag-in xdrg) (cond [(= xdrg 240) (sleep-for-a-while 1)] [else (and (draw-solid-rect (make-posn 0 0) 400 400 'white) (DRAGONIGHT xdrg 70 'white) (sleep-for-a-while .05) (Drag-in (- xdrg 10)))])) (and (Drag-in 400) (sleep-for-a-while 1) ;Here we will add text to go with our last intense battle scene. (draw-solid-string (make-posn 20 20) "Lance sent out Dragonight!") (sleep-for-a-while 1) (draw-solid-string (make-posn 20 45) (string-append npkmn-name ", I choose you!")) (sleep-for-a-while 1) (pokaball 0) (DRAGONIGHT 250 70 'white) ;First, we send out our pokamon (cond [(string=? Poka-list1 "Bulbasoar") (VENASOAR 100 250)] [(string=? Poka-list1 "Squartle") (BLASTOIS 100 250)] [(string=? Poka-list1 "Charmder") (CHARZARD 115 210 'white)]) (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 195 150 'white) (draw-solid-string (make-posn 20 20) "Dragonight used Hyper Beam!") (sleep-for-a-while 3) ;Now dragonight uses hyper beam (draw-solid-rect (make-posn 0 0) 400 400 'black) (cond [(string=? Poka-list1 "Bulbasoar") (VENASOAR 100 250)] [(string=? Poka-list1 "Squartle") (BLASTOIS 100 250)] [(string=? Poka-list1 "Charmder") (CHARZARD 115 210 'black)])) (define (Dragonight-Hyperbeam1 DHX DHY) (cond [(and (< (- DHX 20) 50) (> DHY 300)) true] [else (and (DRAGONIGHT 260 70 'black) (draw-solid-rect (make-posn DHX (+ DHY 50)) 40 40 'white) (sleep-for-a-while .01) (draw-solid-rect (make-posn DHX (+ DHY 50)) 40 40 'white) (Dragonight-Hyperbeam1 (- DHX 10) (+ DHY 10)))])) (and (Dragonight-Hyperbeam1 260 70) (sleep-for-a-while 5) (draw-solid-rect (make-posn 0 0) 400 400 'black) (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 400 400 'white) (cond [(string=? Poka-list1 "Bulbasoar") (VENASOAR 100 250)] [(string=? Poka-list1 "Squartle") (BLASTOIS 100 250)] [(string=? Poka-list1 "Charmder") (CHARZARD 115 210 'white)]) (DRAGONIGHT 260 70 'white) (sleep-for-a-while 3) (draw-solid-rect (make-posn 0 0) 195 150 'white) (draw-solid-rect (make-posn 0 0) 225 25 'white) (draw-solid-string (make-posn 20 20) (string-append npkmn-name " barely survived!")) (sleep-for-a-while 3) (draw-solid-rect (make-posn 0 0) 195 150 'white) (draw-solid-rect (make-posn 0 0) 225 25 'white)) ;Then our user gets to pick an attack (define battle-message2 (string-append "What attack should " npkmn-name " use?")) (define attack-choices2 (cond [(string=? Poka-list1 "Bulbasoar") (list "Hyper Beam" "Sleep Powder" "Solar Beam" "Razor Leaf")] [(string=? Poka-list1 "Squartle") (list "Hyper Beam" "Hydro Pump" "Tail Whip" "Bubble")] [(string=? Poka-list1 "Charmder") (list "Fire Blast" "Hyper Beam" "Wing Attack" "Flamethrower")])) (define atk2 (get-choice battle-message2 attack-choices2)) (sleep-for-a-while 1) ;Now, we define all of our pokamons final attacks. ;Venasoars attacks ;sleeppowder (define (sleep-powder COLOR) (and (draw-solid-disk (make-posn 110 230) 10 COLOR) (sleep-for-a-while .3) (draw-solid-disk (make-posn 110 230) 10 'white) (VENASOAR 100 250) (draw-solid-disk (make-posn 130 200) 10 COLOR) (sleep-for-a-while .3) (draw-solid-disk (make-posn 130 200) 10 'white) (draw-solid-disk (make-posn 145 170) 10 COLOR) (sleep-for-a-while .3) (draw-solid-disk (make-posn 145 170) 10 'white) (draw-solid-disk (make-posn 180 150) 10 COLOR) (sleep-for-a-while .3) (draw-solid-disk (make-posn 225 130) 10 COLOR) (draw-solid-disk (make-posn 170 100) 10 COLOR) (sleep-for-a-while .3) (draw-solid-disk (make-posn 265 105) 10 COLOR) (draw-solid-disk (make-posn 240 60) 10 COLOR) (sleep-for-a-while .3) (draw-solid-disk (make-posn 200 90) 10 COLOR) (draw-solid-disk (make-posn 275 140) 10 COLOR) (sleep-for-a-while 1) (draw-solid-disk (make-posn 225 130) 10 'white) (draw-solid-disk (make-posn 170 100) 10 'white) (draw-solid-disk (make-posn 265 105) 10 'white) (draw-solid-disk (make-posn 240 60) 10 'white) (draw-solid-disk (make-posn 200 90) 10 'white) (draw-solid-disk (make-posn 275 140) 10 'white) (draw-solid-disk (make-posn 180 150) 10 'white) )) ;(sleep-powder 'green) ;razorleaf (define (razor-leaf2 XL2 YL2) (and (leaves XL2 YL2) (sleep-for-a-while .1) (clear-leaves XL2 YL2) (cond [(= XL2 270) true] [else (and (VENASOAR 100 250) (razor-leaf2 (+ 10 XL2) (- YL2 10)))]))) ;(razor-leaf2 100 250) ;solarbeam (define (SOLARBEAM1 SBX) (cond [(= SBX 280) (VENASOAR 280 250)] [else (and (VENASOAR (+ SBX 20) 250) (sleep-for-a-while .1) (draw-solid-rect (make-posn (- SBX 60) 230) 180 150 'white) (SOLARBEAM1 (+ SBX 20)))])) (define (solarbeam sby) (cond [(= sby 0) (sleep-for-a-while .5)] [else (and (draw-solid-rect (make-posn 275 (- sby 10)) 50 10 'green) (sleep-for-a-while .01) (solarbeam (- sby 10)))])) (define (solarbeam1 sby) (cond [(= sby 0) (sleep-for-a-while 1.5)] [else (and (draw-solid-rect (make-posn 275 (- sby 10)) 50 10 'white) (sleep-for-a-while .01) (solarbeam1 (- sby 10)))])) ;(and (SOLARBEAM1 100) (solarbeam 250) (solarbeam1 250) (draw-solid-rect (make-posn 180 250) 250 150 'white) (VENASOAR 100 250)) ;Blastois's attacks ;bubble ;(attack-bubble 130 300) ;hydropump (define (Hydro-Pump1 hpy) (cond [(= hpy 120) (and (sleep-for-a-while .5) (draw-solid-rect (make-posn 53 110) 25 10 'blue) (draw-solid-rect (make-posn 126 110) 25 10 'blue) (sleep-for-a-while .5) (draw-solid-rect (make-posn 48 100) 35 20 'blue) (draw-solid-rect (make-posn 121 100) 35 20 'blue) (sleep-for-a-while .5) (draw-solid-rect (make-posn 43 90) 45 30 'blue) (draw-solid-rect (make-posn 116 90) 45 30 'blue) (sleep-for-a-while .5) (draw-solid-rect (make-posn 38 90) 55 40 'blue) (draw-solid-rect (make-posn 111 90) 55 40 'blue))] [else (and (draw-solid-rect (make-posn 131 (- hpy 10)) 13 10 'blue) (draw-solid-rect (make-posn 58 (- hpy 10)) 13 10 'blue) (sleep-for-a-while .1) (Hydro-Pump1 (- hpy 10)))])) (define (Hydro-Pump2 HPY) (cond [(= HPY 130) (and (draw-solid-rect (make-posn 38 70) 55 30 'blue) (draw-solid-rect (make-posn 111 70) 55 30 'blue) (sleep-for-a-while .2) (draw-solid-rect (make-posn 38 70) 110 60 'blue))] [else (and (draw-solid-rect (make-posn 131 (- HPY 10)) 13 10 'white) (draw-solid-rect (make-posn 58 (- HPY 10)) 13 10 'white) (sleep-for-a-while .1) (Hydro-Pump2 (- HPY 10)))])) (define (final-hydro-pump HPX) (cond [(= HPX 438) true] [else (and (draw-solid-rect (make-posn HPX 70) 110 60 'white) (draw-solid-rect (make-posn (+ HPX 20) 70) 110 60 'blue) (sleep-for-a-while .03) (final-hydro-pump (+ HPX 10)))])) ;(and (Hydro-Pump1 250) (Hydro-Pump2 250) (final-hydro-pump 38)) ;tailwhip (define (tail-whips NA) (and (BLASTOIS 100 250) (sleep-for-a-while .5) (draw-solid-rect (make-posn 20 220) 180 200 'white) (BLASTOIS 120 250) (sleep-for-a-while .5) (draw-solid-rect (make-posn 20 220) 180 200 'white) (BLASTOIS 80 250) (sleep-for-a-while .5) (draw-solid-rect (make-posn 20 220) 180 200 'white) (BLASTOIS 120 250) (sleep-for-a-while .5) (draw-solid-rect (make-posn 40 220) 180 200 'white) (BLASTOIS 100 250) (sleep-for-a-while 2) (draw-solid-rect (make-posn 200 5) 200 200 'white))) ;(tail-whips 0) ;Charzards attacks ;wingattack (define (Wing-Attack WX) (cond [(= 185 WX) (and (CHARZARD 185 210 'white) (sleep-for-a-while 1))] [else (and (CHARZARD (+ WX 10) 210 'white) (sleep-for-a-while .1) (draw-solid-rect (make-posn (- WX 100) 160) 200 220 'white) (DRAGONIGHT 260 70 'white) (Wing-Attack (+ WX 10)))])) (define (wing-attack wy) (cond [(= wy -100) (and (sleep-for-a-while .1) (draw-solid-rect (make-posn 185 wy) 100 220 'white) (CHARZARD 115 210 'white))] [else (and (CHARZARD 185 (- wy 10) 'white) (sleep-for-a-while .01) (draw-solid-rect (make-posn 85 (- wy 10)) 200 220 'white) (wing-attack (- wy 10)))])) ;flamethrower (define (flamethrower-moves XFT YFT) (cond [(= YFT 70) (CHARZARD 62 70 'white)] [else (and (CHARZARD XFT YFT 'white) (sleep-for-a-while .2) (draw-solid-rect (make-posn (- XFT 100) (- YFT 40)) 220 220 'white) (flamethrower-moves (- XFT 7) (- YFT 20)))])) (define (Flamethrower xFT yFT flame-color) (cond [(= xFT 342) (sleep-for-a-while .1)] [(> xFT 244) (and (draw-solid-rect (make-posn xFT (- yFT 40)) 60 100 flame-color) (sleep-for-a-while .07) (Flamethrower (+ 10 xFT) yFT flame-color))] [(> xFT 184) (and (draw-solid-rect (make-posn xFT (- yFT 30)) 60 80 flame-color) (sleep-for-a-while .05) (Flamethrower (+ 10 xFT) yFT flame-color))] [(> xFT 142) (and (draw-solid-rect (make-posn xFT (- yFT 20)) 60 60 flame-color) (sleep-for-a-while .04) (Flamethrower (+ 10 xFT) yFT flame-color))] [(> xFT 100) (and (draw-solid-rect (make-posn xFT (- yFT 10)) 60 40 flame-color) (sleep-for-a-while .03) (Flamethrower (+ 10 xFT) yFT flame-color))] [else (and (draw-solid-rect (make-posn xFT yFT) 60 20 flame-color) (sleep-for-a-while .02) (Flamethrower (+ 10 xFT) yFT flame-color))])) ;fireblast (define (Fire-blast-Charmander posx1 posy1 REDGUY) (and (draw-solid-rect (make-posn (- posx1 25) (+ 45 posy1)) 50 70 REDGUY) (draw-solid-rect (make-posn (- posx1 50) (+ 55 posy1)) 100 20 REDGUY) (draw-solid-rect (make-posn (- posx1 30) (+ 115 posy1)) 20 30 REDGUY) (draw-solid-rect (make-posn (+ 10 posx1) (+ 115 posy1)) 20 30 REDGUY) (draw-solid-disk (make-posn posx1 (+ 23 posy1)) 25 REDGUY))) (define (FIREBLAST FBx FBy) (and (sleep-for-a-while .5) (draw-solid-rect (make-posn 150 190) 20 20 'red) (sleep-for-a-while .5) (draw-solid-rect (make-posn 190 150) 40 40 'red) (sleep-for-a-while .5) (draw-solid-rect (make-posn 150 190) 20 20 'white) (Fire-blast-Charmander 290 50 'red) (sleep-for-a-while .5) (draw-solid-rect (make-posn 190 150) 40 40 'white) (Fire-blast-Charmander 290 50 'yellow) (sleep-for-a-while .5) (Fire-blast-Charmander 290 50 'red) (sleep-for-a-while .5) (Fire-blast-Charmander 290 50 'yellow) (sleep-for-a-while .5) (Fire-blast-Charmander 290 50 'red) (sleep-for-a-while .5) (Fire-blast-Charmander 290 50 'white))) ;Now, we define the last attack, hyper beam, which is the same with all pokamon (define (Pokamon-Hyperbeam1 dhx dhy) (cond [(or (= dhx 500) (= dhy -180)) (sleep-for-a-while 2)] [else (and (cond [(string=? Poka-list1 "Bulbasoar") (VENASOAR 100 280)] [(string=? Poka-list1 "Squartle") (BLASTOIS 100 300)] [(string=? Poka-list1 "Charmder") (CHARZARD 115 260 'black)]) (draw-solid-rect (make-posn dhx (+ dhy 100)) 40 40 'white) (sleep-for-a-while .001) (Pokamon-Hyperbeam1 (+ dhx 2) (- dhy 3)))])) (define (HYPERBEAM!!! Nothin) (and (draw-solid-rect (make-posn 0 0) 400 400 'black) (DRAGONIGHT 260 70 'black) (Pokamon-Hyperbeam1 115 210) (sleep-for-a-while 4) (draw-solid-rect (make-posn 0 0) 400 400 'black) (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 400 400 'white) (cond [(string=? Poka-list1 "Bulbasoar") (VENASOAR 100 250)] [(string=? Poka-list1 "Squartle") (BLASTOIS 100 250)] [(string=? Poka-list1 "Charmder") (CHARZARD 115 210 'white)]) (DRAGONIGHT 260 70 'white))) (sleep-for-a-while 1) (cond [(string=? Poka-list1 "Bulbasoar") (cond [(string=? atk2 "Solar Beam") (and (SOLARBEAM1 100) (solarbeam 250) (solarbeam1 250) (draw-solid-rect (make-posn 180 250) 250 150 'white) (VENASOAR 100 250))] [(string=? atk2 "Razor Leaf") (razor-leaf2 100 250)] [(string=? atk2 "Sleep Powder") (sleep-powder 'green)] [else (HYPERBEAM!!! 0)])] [(string=? Poka-list1 "Squartle") (cond [(string=? atk2 "Bubble") (attack-bubble 130 300)] [(string=? atk2 "Hydro Pump") (and (Hydro-Pump1 250) (Hydro-Pump2 250) (final-hydro-pump 38))] [(string=? atk2 "Tail Whip") (tail-whips 0)] [else (HYPERBEAM!!! 0)])] [else (cond [(string=? atk2 "Flamethrower") (and (flamethrower-moves 115 210) (sleep-for-a-while 1) (Flamethrower 62 80 'red) (Flamethrower 62 80 'white) (draw-solid-rect (make-posn 0 20) 170 215 'white) (CHARZARD 115 210 'white))] [(string=? atk2 "Fire Blast") (FIREBLAST 115 210)] [(string=? atk2 "Wing Attack") (and (Wing-Attack 115) (wing-attack 210))] [else (HYPERBEAM!!! 0)])]) (and (sleep-for-a-while 4) (draw-solid-string (make-posn 20 20) (string-append "Enemy Dragonight fainted!")) (sleep-for-a-while 3) (draw-solid-rect (make-posn 0 0) 195 150 'white) (draw-solid-rect (make-posn 0 0) 225 25 'white) (draw-solid-string (make-posn 20 20) (string-append npkmn-name " gained 10,000 exp points!")) (sleep-for-a-while 3) (draw-solid-rect (make-posn 0 0) 195 150 'white) (draw-solid-rect (make-posn 0 0) 245 25 'white) (draw-solid-string (make-posn 20 20) (string-append character-name " defeated Lance!")) (sleep-for-a-while 3) (draw-solid-rect (make-posn 0 0) 400 400) (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 400 400 'white) (draw-circle (make-posn 200 0) 200 'black) (draw-solid-rect (make-posn 170 195) 60 30 'white) (draw-person 190 135 'black 'black 'brown) (draw-person 190 240 'black 'red 'brown) (draw-ball 190 240) (sleep-for-a-while 3)) (define final-message (string-append "Lance: Well done " character-name ". . .")) (and (draw-solid-string (make-posn 10 350) final-message) (sleep-for-a-while 3) (draw-solid-string (make-posn 20 375) " You truly are a Pokamon Master.") (sleep-for-a-while 5) (draw-solid-rect (make-posn 0 0) 400 400) (sleep-for-a-while 1) (draw-solid-rect (make-posn 0 0) 400 400 'white)) ;CREDITS (define (Credits FinalY) (cond [(= FinalY -350) (draw-solid-string (make-posn 180 200) "The End")] [else (and (draw-solid-string (make-posn 65 FinalY) "Directed by: Nick Grieme and Jamin Ivers") (draw-solid-string (make-posn 60 (+ FinalY 40)) "Screenplay by: Nick Grieme and Jamin Ivers") (draw-solid-string (make-posn 70 (+ FinalY 80)) "Edited by: Nick Grieme and Jamin Ivers") (draw-solid-string (make-posn 69 (+ FinalY 120)) "Images by: Jamin Ivers and Nick Grieme") (draw-solid-string (make-posn 85 (+ FinalY 200)) "Starring: Professor Oke as himself") (draw-solid-string (make-posn 87 (+ FinalY 280)) "Special Thanks: Miss T and Brok") (sleep-for-a-while .015) (draw-solid-rect (make-posn 0 0) 400 400 'white) (sleep-for-a-while .0001) (Credits (- FinalY 2)))])) (Credits 400)