Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 The Paint Program Contest
Index -> Contests
Goto page 1, 2  Next
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
Sean




PostPosted: Fri Feb 08, 2008 5:31 pm   Post subject: The Paint Program Contest

The Paint Program Contest (P.P.C)

Objective:
To successfully create a Paint Program in a programming language, preferably Turing. To establish an efficient, unique and user-friendly program that allows users to design, draw and create pictures using your functions, procedures and the language predefined designs. The program can either use GUI or Non-GUI, decidable by you. All programs must meet the requirements to have atleast completed the objective.

Requirements:
Number of Designs: Minimum of Five
Number of Colours: Minimum of Eight
Number of Programming Lines: As many as needed
Style of Programming: GUI or Non-GUI
Documentation: Required
Due Date: Meet the Stated Due Date
Input: Keyboard and/or Mouse Input


Submission:
Due Date: February 15th, 2008
Submission Style: Submit .exe format on forums, and PM Vilament with Source Code to ensure your code is not stolen.
Sumbission Detail: Submit a brief description of what it does, and if you used GUI or not.


Rules:
Arrow Code with the help of tutorials, class work and knowledge.
Arrow Do not steal, or ask people to code it for you.
Arrow Do feel free to ask a judge, or represenative on what else is allowed.
Arrow Do not submit a program created by someone else, that is on the site, or off the site.
Arrow Be creative, express your talent through this program.


Judges/Represenatives:
Host/Judge: Vilament
Other Judges: Please Contact if you have a great understanding of any other language then Turing.
Admins: All Admins (Allowed to Lock, or Delete any inappropiate posts, submissions and/or spamming of the thread).


Prizes:
Prizes: Prizes awarded to those who are judged highest. They will receive bits depending on where they finish.
Donations: Feel free to donate any bits that you wish to have rewarded to the winners, this can be done by donating to Vilament.
Sponsor
Sponsor
Sponsor
sponsor
StealthArcher




PostPosted: Fri Feb 08, 2008 5:37 pm   Post subject: RE:The Paint Program Contest

I'm in, here's my 50 bit entrance fee.
Tony




PostPosted: Fri Feb 08, 2008 5:43 pm   Post subject: RE:The Paint Program Contest

@Vilament - I think it would be a good idea to put up your own submission first, as a reference.

The requirements seem kind of sketchy. Number of colours? Documentation? Hmm... and 1 week deadline is way too short for something like this.
Latest from compsci.ca/blog: Tony's programming blog. DWITE - a programming contest.
Sean




PostPosted: Fri Feb 08, 2008 5:53 pm   Post subject: Re: The Paint Program Contest

Updates:

Arrow Due Date: March 8th, 2008.
StealthArcher




PostPosted: Fri Feb 08, 2008 5:59 pm   Post subject: RE:The Paint Program Contest

Is it okay if I use Cervantes text field for this?
Sean




PostPosted: Fri Feb 08, 2008 6:20 pm   Post subject: Re: The Paint Program Contest

Might I ask what it is?
Tony




PostPosted: Fri Feb 08, 2008 6:21 pm   Post subject: RE:The Paint Program Contest

I'm also thinking that the submissions should be posted as source code. After all, we're here to learn. To avoid any "viewed source before deadline" issues, it could be a protected .zip file.

Refer to zylum's tetris challenge for the process.

Unless, of course, there are objections to this.
Latest from compsci.ca/blog: Tony's programming blog. DWITE - a programming contest.
Sean




PostPosted: Fri Feb 08, 2008 6:53 pm   Post subject: Re: The Paint Program Contest

Agreed with Tony, new submission status now.

.Zip format with your .exe and Source Code.
Sponsor
Sponsor
Sponsor
sponsor
StealthArcher




PostPosted: Fri Feb 08, 2008 7:25 pm   Post subject: RE:The Paint Program Contest

Cervantes started making gui repolacements as a way to teach coding with classes in turing. He made a button, which i havew improved some and use, and a text filed replacement. Which is why I asked, because I would like to use it, rather than code from scratch as it is about 500 lines. I do understand the code.
Nick




PostPosted: Fri Feb 08, 2008 7:26 pm   Post subject: RE:The Paint Program Contest

got it all done except colors plus bonus features (ex: undo,more shapes, more colors, save/load,etc...)
McKenzie




PostPosted: Fri Feb 08, 2008 8:31 pm   Post subject: Re: The Paint Program Contest

Are you sure you're the most qualified to evaluate a paint program? I've evaluated about 400 paint programs in the past 7 years Wink
Mackie




PostPosted: Fri Feb 08, 2008 10:34 pm   Post subject: RE:The Paint Program Contest

Are all languages accepted?
fishtastic




PostPosted: Fri Feb 08, 2008 10:37 pm   Post subject: Re: The Paint Program Contest

Wow! The one I posted in the Turing submission part meets all your requirement. Laughing


var version := "1.2" var loadtime := 0.0 var mx, my, mc : int var selected := 255 var chosen := 1 var key : array char of boolean var actions : flexible array 1 .. 0 of int var ax1, ax2, ay1, ay2 : flexible array 1 .. 0 of int var step : flexible array 1 .. 0 of int var aColor : flexible array 1 .. 0 of int var thick : flexible array 1 .. 0 of int var toolName : array 0 .. 9 of string := init ("erasor", "Line", "brush", "rectangle", "oval", "star", "mapleleaf", "fillshape", "fillblank", "no") var thickness := 1.0 var tool := 1 var name := "" View.Set ("offscreenonly") proc help var ch : char cls color (red) put "Welcome to Turing Paint " + version put "Press 'h' at ANY TIME for HELP" put "" color (black) put "select colour at the bottom of the window" put "press '0'~'9' to select tools" put "press '+' and '-' to adjust line thickness" put "press 'z' to move 1 step back" put "press 's' to save and 'l' to load" put "press 'w' and 'q' to selection previous and next colour" put "" put "press any key to continue" View.Update ch := getchar end help proc newAll new actions, upper (actions) + 1 new ax1, upper (ax1) + 1 new ay1, upper (ay1) + 1 new ax2, upper (ax2) + 1 new ay2, upper (ay2) + 1 new aColor, upper (aColor) + 1 new thick, upper (thick) + 1 actions (upper (actions)) := 0 aColor (upper (aColor)) := 0 ax1 (upper (ax1)) := 0 ay1 (upper (ay1)) := 0 ax2 (upper (ax1)) := 0 ay2 (upper (ay1)) := 0 thick (upper (thick)) := 0 end newAll proc back if upper (actions) > 0 then loop exit when upper (actions) = step (upper (step)) new actions, upper (actions) - 1 new ax1, upper (ax1) - 1 new ay1, upper (ay1) - 1 new ax2, upper (ax2) - 1 new ay2, upper (ay2) - 1 new aColor, upper (aColor) - 1 new thick, upper (thick) - 1 end loop new step, upper (step) - 1 delay (50) end if end back proc drawAll for i : 1 .. upper (actions) if actions (i) = 0 then Draw.ThickLine (ax1 (i), ay1 (i), ax2 (i), ay2 (i), thick (i), white) elsif actions (i) = 1 then Draw.ThickLine (ax1 (i), ay1 (i), ax2 (i), ay2 (i), thick (i), aColor (i)) elsif actions (i) = 2 then Draw.ThickLine (ax1 (i), ay1 (i), ax2 (i), ay2 (i), thick (i), aColor (i)) elsif actions (i) = 3 then drawfillbox (ax1 (i), ay1 (i), ax2 (i), ay2 (i), aColor (i)) elsif actions (i) = 4 then drawfilloval (ax1 (i), ay1 (i), ax2 (i) - ax1 (i), ay2 (i) - ay1 (i), aColor (i)) elsif actions (i) = 5 then drawfillstar (ax1 (i), ay1 (i), ax2 (i), ay2 (i), aColor (i)) elsif actions (i) = 6 then drawfillmapleleaf (ax1 (i), ay1 (i), ax2 (i), ay2 (i), aColor (i)) elsif actions (i) = 7 then drawfill (ax1 (i), ay1 (i), aColor (i), 0) elsif actions (i) = 8 then drawfill (ax1 (i), ay1 (i), 255, aColor (i)) end if end for end drawAll proc showStat if (Time.Elapsed - loadtime not= 0) then color (black) put "FPS:", 1000 / (Time.Elapsed - loadtime) : 4 : 0, " Total Points:", upper (ay2) color (red) put toolName (tool), " tool" put "thickness: ", round (thickness), " colour #: ", chosen end if end showStat proc showAll for i : 0 .. maxcolor drawfillbox (round ((maxx / maxcolor) * i), 0, round ((maxx / maxcolor) * i) + 3, 20, i) end for drawfillbox (0, 20, maxx, 40, chosen) if my < 20 then drawfillbox (0, 20, maxx, 40, selected) end if loadtime := Time.Elapsed end showAll proc save (name : string) var OUT : int open : OUT, name, put for i : 1 .. upper (ax1) put : OUT, ax1 (i) put : OUT, ay1 (i) put : OUT, ax2 (i) put : OUT, ay2 (i) put : OUT, actions (i) put : OUT, thick (i) put : OUT, aColor (i) end for put "saved!!" delay (1000) close : OUT end save proc load (name : string) for i : 1 .. upper (ax1) + 1 back end for var IN : int open : IN, name, get newAll loop get : IN, ax1 (upper (ax1)) get : IN, ay1 (upper (ay1)) get : IN, ax2 (upper (ax2)) get : IN, ay2 (upper (ay2)) get : IN, actions (upper (actions)) get : IN, thick (upper (thick)) get : IN, aColor (upper (aColor)) exit when eof (IN) = true newAll end loop put "loaded!!" delay (1000) close : IN end load proc checkKeys Input.KeyDown (key) if key (chr (ord ("+"))) then thickness += 0.2 elsif key (chr (ord ("-"))) and thickness > 1 then thickness -= 0.2 elsif key (chr (ord ("z"))) then back put "canceled 1 move" View.Update delay (100) elsif key (chr (ord ("h"))) then help elsif key (chr (ord ("s"))) then cls View.Set ("nooffscreenonly") put "File name(type 'cancel' to cancel)" get name if name not= "cancel" then save (name + ".txt") end if View.Set ("offscreenonly") elsif key (chr (ord ("l"))) then cls View.Set ("nooffscreenonly") put "File name(type 'cancel' to cancel)" get name if name not= "cancel" then load (name + ".txt") end if View.Set ("offscreenonly") elsif key (chr (ord ("q"))) then if chosen > 0 then chosen -= 1 end if elsif key (chr (ord ("w"))) then if chosen < 255 then chosen += 1 end if end if for i : 0 .. 9 if key (chr (ord (intstr (i)))) then tool := i end if end for end checkKeys help loop cls mousewhere (mx, my, mc) showStat drawAll showAll checkKeys if mc = 1 and my > 20 then new step, upper (step) + 1 step (upper (step)) := upper (ax1) newAll actions (upper (actions)) := tool aColor (upper (aColor)) := chosen ax1 (upper (ax1)) := mx ay1 (upper (ay1)) := my thick (upper (thick)) := round (thickness) loop cls mousewhere (mx, my, mc) ax2 (upper (ax2)) := mx ay2 (upper (ay2)) := my showStat drawAll showAll exit when mc = 0 if tool = 0 or tool = 2 then newAll actions (upper (actions)) := tool aColor (upper (aColor)) := chosen ax1 (upper (ax1)) := mx ay1 (upper (ay1)) := my thick (upper (thick)) := round (thickness) end if View.Update delay (10) end loop elsif my < 20 and round (mx / (maxx / maxcolor)) > -1 and round (mx / (maxx / maxcolor)) <= maxcolor then selected := round (mx / (maxx / maxcolor)) if mc = 1 then chosen := round (mx / (maxx / maxcolor)) end if end if View.Update delay (20) end loop
michaelp




PostPosted: Sat Feb 09, 2008 8:45 am   Post subject: Re: RE:The Paint Program Contest

Mackie @ Fri Feb 08, 2008 10:34 pm wrote:
Are all languages accepted?

Read the first sentence of the first post and you'll get it. Very Happy
He said in any language, but preferably Turing.
McKenzie




PostPosted: Sat Feb 09, 2008 9:44 am   Post subject: Re: The Paint Program Contest

As I alluded to I've been giving this as a major assignment for the past seven years. They are all doing it in Python this year, but I'm not sure if any will want to share their hard earned code on-line. I do think my assignment sheet may be useful for this competition, as it gives a standardized evaluation sheet. You will notice that the marks are are not even. Some of the marks are very easy to get and some of the marks are very hard to get. This exists to correct the standard "double-hump" distribution of CS marks (where 70% of the class gets 90% and 30% gets 50%)


Paint Project.doc
 Description:

Download
 Filename:  Paint Project.doc
 Filesize:  45.5 KB
 Downloaded:  457 Time(s)

Display posts from previous:   
   Index -> Contests
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 2  [ 22 Posts ]
Goto page 1, 2  Next
Jump to:   


Style:  
Search: