%The Face %Written by Sayed Khader %This Program Will Actively Draw A Face %According to user-based input %VARIABLE SECTION STARTS %Declare Variables For Face var centerfacex, centerfacey, faceRadiusx, faceRadiusy : int %Center of the face (x, y of oval) centerfacex := maxx div 2 centerfacey := maxy div 2 faceRadiusx := 120 faceRadiusy := 150 %Current Face Part Being Worked on var facePart : string %Program Status |CHECK TO SEE IF USER WANTS TO QUIT| var PROSTATUS : boolean PROSTATUS := false %Dummy Proofing Variables var FACEPARTWORKED : boolean FACEPARTWORKED := true %Eye Detail Variables var eyeShape, eyeColor, eyeSelect : string %Nose Detail Variables var noseShape, noseColor, noseSelect : string %Mouth Detail Variables var mouthShape, mouthColor, mouthSelect : string %Memory For Face Shapes var mouthColornum, noseColornum, eyeColornum : int %VARIABLE SECTION ENDS %%Prepare Base Face %%Prompt for Eye Shape put "Let's get a base-face together." loop %Dummy Proof put "What shape would you like the eyes to be, round or wide?(This message will repeat if you enter invalid input)" get eyeShape exit when eyeShape = "round" exit when eyeShape = "wide" end loop cls %% Prompt for Eye Color loop put "Now, what eye color would you like?(This message will repeat if you enter invalid input)" get eyeColor exit when eyeColor = "red" exit when eyeColor = "blue" exit when eyeColor = "green" exit when eyeColor = "purple" exit when eyeColor = "yellow" end loop cls %%Process eye-color if eyeColor = "red" then eyeColornum := 12 elsif eyeColor = "blue" then eyeColornum := 9 elsif eyeColor = "yellow" then eyeColornum := 14 elsif eyeColor = "green" then eyeColornum := 10 elsif eyeColor = "purple" then eyeColornum := 13 end if %% Prompt for Nose Shape loop put "Now, what nose shape would you like? Round, square or triangle?(This message will repeat if you enter invalid input)" get noseShape exit when noseShape = "round" exit when noseShape = "triangle" exit when noseShape = "square" end loop cls %%Prompt for Nose Color loop put "Now, let's select a nose color.(This message will repeat if you enter invalid input)" get noseColor exit when noseColor = "red" exit when noseColor = "blue" exit when noseColor = "yellow" exit when noseColor = "purple" exit when noseColor = "green" end loop cls %%Process Nose Colors if noseColor = "red" then noseColornum := 12 elsif noseColor = "blue" then noseColornum := 9 elsif noseColor = "yellow" then noseColornum := 14 elsif noseColor = "green" then noseColornum := 10 elsif noseColor = "purple" then noseColornum := 13 end if %%Prompt For Mouth Shape loop put "Now, let's select a mouth shape (round or square).(This message will repeat if you enter invalid input)" get mouthShape exit when mouthShape = "round" exit when mouthShape = "square" end loop %%Prompt For Mouth Color loop put "Now, let's select a color for your mouth.(This message will repeat if you enter invalid input)" get mouthColor exit when mouthColor = "red" exit when mouthColor = "blue" exit when mouthColor = "yellow" exit when mouthColor = "purple" exit when mouthColor = "green" end loop cls %%Process Mouth Colors if mouthColor = "red" then mouthColornum := 12 elsif mouthColor = "blue" then mouthColornum := 9 elsif mouthColor = "yellow" then mouthColornum := 14 elsif mouthColor = "green" then mouthColornum := 10 elsif mouthColor = "purple" then mouthColornum := 13 end if cls %%Let him wait for a second put "Processing request. . ." delay (200) %Main Function int main(void) loop exit when PROSTATUS = true put "Here is your base face" drawfilloval (centerfacex, centerfacey, faceRadiusx, faceRadiusy, 66) %Outer Face Oval %Draw the eyes if eyeShape = "wide" then drawfilloval (275, 250, 40, 20, eyeColornum) %Left Eye drawfilloval (370, 250, 40, 20, eyeColornum) %Right Eye elsif eyeShape = "round" then drawfilloval (275, 250, 32, 32, eyeColornum) %Left Eye drawfilloval (370, 250, 32, 32, eyeColornum) %Right Eye end if %Draw The Nose if noseShape = "triangle" then drawline (300, 180, 340, 180, black) drawline (300, 180, 320, 230, black) drawline (340, 180, 320, 230, black) drawfill (310, 181, noseColornum, black) elsif noseShape = "square" then drawfillbox (285, 175, 350, 220, noseColornum) elsif noseShape = "round" then drawfilloval ((maxx div 2), (maxy div 2), 30, 30, noseColornum) end if %Draw The Mouth if mouthShape = "round" then drawfilloval (320, 120, 80, 20, mouthColornum) elsif mouthShape = "square" then drawfillbox (260, 100, 380, 150, mouthColornum) drawfillbox (265, 100, 275, 150, white) drawfillbox (290, 100, 300, 150, white) drawfillbox (320, 100, 330, 150, white) drawfillbox (340, 100, 350, 150, white) drawfillbox (360, 100, 370, 150, white) end if %Now Change the Face Around loop put "To add or change a part of the face, name that part. Or to Quit, type 'exit'" get facePart cls %Check if user wants to quit if facePart = "quit" then PROSTATUS := true else PROSTATUS := false end if exit when PROSTATUS = true %Check what User Wants to edit LOOPS DUMMY PROOF if facePart = "nose" %Everything about the nose then loop put "Would you like to change the color or the shape of your nose?(This message will repeat if you enter invalid input)" get noseSelect cls if noseSelect = "shape" then loop put "Would you like the nose to be round, square, or triangle?(This message wil repeat if you enter invalid input)" get noseShape cls exit when noseShape = "round" exit when noseShape = "sqaure" exit when noseShape = "triangle" end loop elsif noseSelect = "color" then loop put "What nose color would you like?(This message will repeat if you enter invalid input)" get noseColor cls exit when noseColor = "red" exit when noseColor = "blue" exit when noseColor = "yellow" exit when noseColor = "purple" exit when noseColor = "green" end loop else put "I don't know that feature of the nose!" end if exit when noseSelect = "shape" exit when noseSelect = "color" end loop % EVERYTHING ABOUT THE EYES elsif facePart = "eyes" then loop %Dummy Proof put "Would you like to change the color or the shape of the eyes?(This message will repeat if you enter invalid input)" get eyeSelect cls exit when eyeSelect = "shape" exit when eyeSelect = "color" end loop if eyeSelect = "shape" then loop put "What eye shape would you like? wide or round?(This message will repeat if you enter invalid input)" get eyeShape cls exit when eyeShape = "round" exit when eyeShape = "wide" end loop elsif eyeSelect = "color" then loop put "What eye color would you like?(This message will repeat if you enter invalid input)" get eyeColor cls exit when eyeColor = "red" exit when eyeColor = "blue" exit when eyeColor = "green" exit when eyeColor = "purple" exit when eyeColor = "yellow" end loop else put "I don't know that feature of the eyes!" end if %EVERYTHING about the mouth elsif facePart = "mouth" then loop put "Would you like to change the color or the shape of your mouth?(This message will repeat if you enter invalid input)" get mouthSelect cls exit when mouthSelect = "shape" exit when mouthSelect = "color" end loop if mouthSelect = "shape" then loop put "What mouth shape would you like? Round, or wide?(This message will repeat if you enter invalid input)" get mouthShape cls exit when mouthShape = "wide" exit when mouthShape = "round" end loop elsif mouthSelect = "color" then loop put "What mouth color would you like?" get mouthColor cls exit when mouthColor = "red" exit when mouthColor = "blue" exit when mouthColor = "yellow" exit when mouthColor = "purple" exit when mouthColor = "green" end loop else put "I don't know that feature of the mouth!" end if elsif facePart = "exit" then quit else put "I don't know that face part, please enter a different one or check your spelling" FACEPARTWORKED := false end if exit when facePart = "quit" %DECODE COLORS %%Process Mouth Colors if mouthColor = "red" then mouthColornum := 12 elsif mouthColor = "blue" then mouthColornum := 9 elsif mouthColor = "yellow" then mouthColornum := 14 elsif mouthColor = "green" then mouthColornum := 10 elsif mouthColor = "purple" then mouthColornum := 13 end if %%Process Nose Colors if noseColor = "red" then noseColornum := 12 elsif noseColor = "blue" then noseColornum := 9 elsif noseColor = "yellow" then noseColornum := 14 elsif noseColor = "green" then noseColornum := 10 elsif noseColor = "purple" then noseColornum := 13 end if %%Process eye-color if eyeColor = "red" then eyeColornum := 12 elsif eyeColor = "blue" then eyeColornum := 9 elsif eyeColor = "yellow" then eyeColornum := 14 elsif eyeColor = "green" then eyeColornum := 10 elsif eyeColor = "purple" then eyeColornum := 13 end if exit when FACEPARTWORKED = true end loop end loop cls %Show the face for a final time put "Here is your final face... Ew.." drawfilloval (centerfacex, centerfacey, faceRadiusx, faceRadiusy, 66) %Outer Face Oval %Draw the eyes if eyeShape = "wide" then drawfilloval (275, 250, 40, 20, eyeColornum) %Left Eye drawfilloval (370, 250, 40, 20, eyeColornum) %Right Eye elsif eyeShape = "round" then drawfilloval (275, 250, 32, 32, eyeColornum) %Left Eye drawfilloval (370, 250, 32, 32, eyeColornum) %Right Eye end if %Draw The Nose if noseShape = "triangle" then drawline (300, 180, 340, 180, black) drawline (300, 180, 320, 230, black) drawline (340, 180, 320, 230, black) drawfill (310, 181, noseColornum, black) elsif noseShape = "square" then drawfillbox (285, 175, 350, 220, noseColornum) elsif noseShape = "round" then drawfilloval (centerfacex, centerfacey, 30, 30, noseColornum) end if %Draw The Mouth if mouthShape = "round" then drawfilloval (320, 120, 80, 20, mouthColornum) elsif mouthShape = "square" then drawfillbox (260, 100, 380, 150, mouthColornum) drawfillbox (265, 100, 275, 150, white) drawfillbox (290, 100, 300, 150, white) drawfillbox (320, 100, 330, 150, white) drawfillbox (340, 100, 350, 150, white) drawfillbox (360, 100, 370, 150, white) end if %Animate a little bit