From 9b80506d0e1a0d832468d6493e86586bbba4d698 Mon Sep 17 00:00:00 2001 From: darmas Date: Thu, 17 Dec 2015 09:36:47 -0500 Subject: [PATCH 1/2] raindrop created --- raindropGameCode/Catcher.pde | 4 +++ raindropGameCode/Raindrop.pde | 35 +++++++++++++++++++++++++++ raindropGameCode/raindropGameCode.pde | 4 +-- 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 raindropGameCode/Catcher.pde create mode 100644 raindropGameCode/Raindrop.pde diff --git a/raindropGameCode/Catcher.pde b/raindropGameCode/Catcher.pde new file mode 100644 index 0000000..928925c --- /dev/null +++ b/raindropGameCode/Catcher.pde @@ -0,0 +1,4 @@ +//class Catcher(){ + // PVector loc; + //float diam// + \ No newline at end of file diff --git a/raindropGameCode/Raindrop.pde b/raindropGameCode/Raindrop.pde new file mode 100644 index 0000000..ae6cfa0 --- /dev/null +++ b/raindropGameCode/Raindrop.pde @@ -0,0 +1,35 @@ +class Raindrop { + PVector loc, vel, acc; + float diam; + color c; + + Raindrop() { + diam=20; + loc=new PVector(random(0, width), 0); + vel=PVector.random2D(); + acc=new PVector(0, 5); + c= color(204, 255, 255); + } + void display() { + fill(c); + noStroke(); + triangle(loc.x-diam/2, loc.y, loc.x, loc.y-40, loc.x+diam/2, loc.y); + ellipse(loc.x, loc.y, diam, diam); + } + + void fall() { + vel.add(acc); + loc.add(vel); + } + boolean isInContactWith(PVector m) { + if (loc.dist(m) < diam/2) { + return true; + } else { + return false; + } + } + void reset() { + loc.y=0; + vel.y=0; + } +} \ No newline at end of file diff --git a/raindropGameCode/raindropGameCode.pde b/raindropGameCode/raindropGameCode.pde index 944de61..c03543a 100644 --- a/raindropGameCode/raindropGameCode.pde +++ b/raindropGameCode/raindropGameCode.pde @@ -9,7 +9,7 @@ Raindrop r; //declare a new Raindrop called r void setup() { size(1200, 800); mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} - r = new Raindrop(random(width), 0); //Initialize r. The parameters used are the initial x and y positions + r = new Raindrop(); //Initialize r. The parameters used are the initial x and y positions } void draw() { @@ -23,4 +23,4 @@ void draw() { if (r.loc.y > height + r.diam/2) { //check to see if the raindrop goes below the bottom of the screen r.reset(); //if it does, reset the raindrop } -} +} \ No newline at end of file From e84c839085ed5c9aeb59f03641e237346571efb4 Mon Sep 17 00:00:00 2001 From: darmas Date: Mon, 11 Jan 2016 10:01:32 -0500 Subject: [PATCH 2/2] RaindropGame_commented --- raindropGameCode/BUCKET.png | Bin 0 -> 9992 bytes raindropGameCode/Catcher.pde | 39 +++++++++++-- raindropGameCode/Raindrop.pde | 34 +++++------ raindropGameCode/Timer.pde | 28 +++++++++ raindropGameCode/background.jpg | Bin 0 -> 8879 bytes raindropGameCode/raindropGameCode.pde | 79 +++++++++++++++++++++----- 6 files changed, 144 insertions(+), 36 deletions(-) create mode 100644 raindropGameCode/BUCKET.png create mode 100644 raindropGameCode/Timer.pde create mode 100644 raindropGameCode/background.jpg diff --git a/raindropGameCode/BUCKET.png b/raindropGameCode/BUCKET.png new file mode 100644 index 0000000000000000000000000000000000000000..7e5ab0af6689fcb010e66f47e6e73df3dd5d9860 GIT binary patch literal 9992 zcmZ`YId*?RuMX_AvLk>KFqki(v+8Qse-I5@b10D}8J2>5vL zUf?-sYpUV=i%&;?x^EHtJhAY{!2vG)_u(3RGc*0KGtfub`Ck4n76(7->JJVM&pAv@ z*(7-7xHKrtdLei8lW~n9>vM~|WZ|tiUwp@Ss^YR~m_5Egjfg!p9(P8@V`Q;j95KW?Dl7sir1 zce^E_Kf1qvb>9jed{yj+5G$r`s7(?Sx1#}bYBsQ%**-@?b|-7y=Hlc>@GkXnfVZceY3&a ztw4M-Aa4|~KMh}Ac6&o7*o;2ZV(JCN52qaa%q4)g(?ieAyg#;N(&XIn>d*cTKaopC zB8A-k=LsC;f$a=UHZQlrsx-kQfs|a8$m+fk<32S~%C=9dPjsxYTIM6e)}MvX=M|xr z%l(kf)@U<@U`^o{eAnB?;~si&M$*P4;vdd@?!Se;oEH4$iFf22M^wjM`AXFrl0;6A zve|Au^Qa(ySatK0q!CU$VKIU?-h!(l|L%<7W&Og@yHEu?XS!#OiV+0Lr^sA(f9L{n zM{es9$dN}0A&>j>AY$>{RS7C^E=o%ZFGHKcKJ54Dj0Tskq%Vyql=bYN_2lkh(<7qg!K-Wh2!9e6 zg>gut=tYPYuIS4R5Tu^r%Et(8qUS()(NJH+c}|Tt5gl{7Q5(<8ghdg4tt)+;RDPn= z^-8cJ{^pw46G6We{CUK0v7zox@9kje?8_a)Db239XOL|j-j%6_jZOVKq=yntO~WRg zD#{14$>abP_J4o9NTubwi~b%=eA8V3OrduIBGi)?9|VniTu0rSu5f47*_{Q$qr;x& z!TKu#(*3>yK8y_aJtpAz{H{T~m%mMuO}atPgX! zXtf&kJAU@;@rHn7g|Q_2QRahde2y5gbnwE_CYr+QW3>Z^RkzRbdTuIqRW};}SNCgF z5Nu}bXm$F%&3-N}kgT;du83yay)eBXy#-LRIVWM&<$js?mLE8OKsOFT-$WgTXlFMW zfU=ZeQw*e#1kF1TJ6%xw%lEPF{5pRawSRMb4T|@f3pSC>=ZpW#+S`@jEaiH!jd%Sa z0IrMV4?oYb7QC)<`xb9r(*DI{h*hiWo3VS~Od9J?h053G-^gyHoLiD8niD@giQqW4 z$QRane`~a>>FFgc&Fv{gL2|WxCb%kmr$Nv^kuIS9hm4**fg*Q)d>2F$kxxsNssH_)dm@M>3o z=xK&U;|7B_U2k&^@@0ViB{-r8yn@E1{cXYV$H>P^mB#FhECFXmh%6FtMcu{PX(- z)s^|kRYy*z>-o!B?@mqus!V5iC9n0vZ*?*o@}(GCf(=n>>8Uq4&!{y{PoMdMXR78e z5+F7XjS5N>%p6>2b$!w+`8Ur5sXs1_?yCVV+7e}%@<&+-fVZoe+;#5@z9&A?yN>Mh z>?9#v7RYzSWCPz&S8>UP72~KVN$d7W1`tWlCIffxxc`>qt~_?ETorCc2-#(5T(@rn zR0=eySsVl&QYyRbQnkUSCp2Bufp=jk>F@m?^itMXpOlG7SxU%l(}`4apnp((+|jXB z215L+uqt~SEWbDa?^vjJg3et%jfQAKd`e>8rOXLEW7q4tdR>R&f`wsZ;F)fO-p(Nd zT-{-1)c}d7Wo34ljE$HZOOq~5s#$8NHhWb0JDn7!w|cQD4}A>>xIiCkVw3VwmTeRA zj+bN2o3k;Y!B6ybpjSX;m(8#?9>!8FGiv3%bz@?VvapYJKWD!R6=Oh$WTaQ7x?R94 z3P#+5x16p29OAIZ6djH?0M6hpDUJ-&&o5__AAKJSY?}xni|JMO>kzvLidWN{+yJV? z++A315!N~II*k!?Ug^>#5kc@7<0kc4Zp!0TmVc2JG9s^sk@Egw}P+KU0rHJxUm?`h%%`6CnJN2;sa zeM=84BNXk^E9=IK~rI3-!^iJyo?<#)l^q<&vuHfG_vdB_>uu9A`vc#XFj`#F)T46w~ zzRGG5mAYG3KFxxa))8rs`U-*F7!qTXl}l~auVHzM(ZvG)#CrQi$p88^BfRAuY+l74 zsQ~;#JDo{nu5meH21{6jyc;2Eh9aM&dz(gRe~fYJcEy{ze;H{epzIuV>l5~+^aLn- zrN3EVS=GZ4$O)ab-P{Rw?0~Q@Ogw+xRM!T>TG18O`QiMNa}vAsv!v`@<+g3pc3s`b zJ(LU$jURs9?!}vMO2_A<-Oh5to#K-L-a09rLNxzfb_rxm)eanY(Cs2x=!H}kq>tt5ho`e?GTU!9rF%U_qz;{WI)5EDzutIB$`RwK ziWkl0(EjOEnXMuP*K4a@?WwuV5SMUda>%1W?GLW1LzEqzeSwc<0%Nl776P&U>z^C% zG^Pl>qsf`=2HE6CK9bUIgoc#^jyAM9ai1&nqhhXkm9&m&Q^H3I6~_J6r>wQ}d)_5I zJI5^;b;~=rrLyPI0w~#r1)q)Fz1U0d-QjC0d*>PHG8ji5db9%F?xfC{Ph6T|e{7=0 z7eZt3829=>PASl~V)8!WI1^G`KlJ4}#Jx)wrNr^t0I_&%`xT99LFj{gxgfv%JAQqA z4EnYSVS%rXYR3Q7G|XGCjt4zw+2Jn@KHV7A2l%{>nosLnrn;Na#+5w~CrTrbZ{=I1 z;`EJY@n_>yD*!6rUT!7Ygb@%^C&>@U2s|q19Oti2G5YyFMd4@2Pud-~JABaqKXUiT z7kA@fw_$mj#@F6l)r$ESFb{&?0?ZCq;RT1jGTmiDjzQ`Gs)}Mz&wfpEVA?E<&*l>R zxWL+ad#f%-aMu{d<3)nv%P--`Z~Yd{&qzrKpy>X6Hm%8b%mP<};t?=BiWK6tGeP@} z`(%QvOl|v(Zz;#Gsk~<=l^4az6`*6r!J7X9{xo~irMJ=qmmKaHUWve^F4jpR(u%8D zHUOzC>o~fX)I)mWu{4HS4{}Y6)M?=~g5S4_GPHxphOC1g9<$VzR$s33MV8x^=+xy| z)){Dv<3eRtWB$s7uyfv#OVA(yw=a0FHa41NTWl@(Y_kTDkPxzM$2auSj~?$! zca{y!nLG&pWc?Gv^Inn<$ncDBMp5P7=b8wy><~1fGyLPkMqM0C$AJl4(C?(>YwVI0 z%`6IFd$Cuko46cHFKVF6>R+f^z#L3uNBf>~6TGSqvg%41nX$Df_m~Tgp?xeZFA!w5 zn>#OaP=Hd{1(#B-(y)F1l|vDg&er3K;QQf|;B_nMN6*eMw6l zB7d#p%tk7cPYclmnWA^q@_aar`9~Ew4(nQ#0gaF&m*BmMSVa#<`QDu;)h~^MNu7Nm zr_4~L6$FqgKbRuhd?++nlurzmD;*mv>>%LZSUE%`M66u4OY1i_st#4BF;uH`OUunD zZm(Xi%>Cej5cPv8LXJ!ra+anwFrjD5p$=tCzPsvzglaueQhJ<(w?h9ER zkpGCWWiL$9m+#@a@%y9gP0oCUbAh@d*y{%d6DF@w%$yDxbYC}~H93a9{8Bm1yLc`b zn*GE7d6Nf49Wp9eHd_FqNvz!!>0hX>K47d$;PM?vv^@MJz=!y$k@tc}Wd2PT*P^sm zTr`zdBZ9ZB07Z0IDvaN+}6kF<(||x&a^oDBzRAVY++znz#4PYFq%84@^va! zIK^sQCaOG;Nmd8H7pqNL8bDo_;q5=ia8jo*!?3;-=AKiUTeU1uodz$Nq|&Pp<4wpf z?fVRFdKk}a2uZuL+|2&oNcZ5UT5bA7v%4G?fhukT`0IRMepRV$Z-T(fZoK{RR7tL z>W1yAJsnWm^_gfxq{pPF4xHcYxn;{y6wjk{&nGjU9^^akNT6utu6g{4cqTRkJ6)8| zjJjnx7=Kn+i!N||G(GOM(|SkAdA_#}lI^LHhq39K_jan9p#nU=rN3$4Q8^0JDlSPj z8GFYqw!JTMUg;DnX%fat34mCllh6K&rGds331YXA#mgqn|GeNJt0WUt8mTc zoA!r}=e!EL1NPca@m~7UW3)|6x7K^2AeP5uw3Yp(aW&YI4 zkW_p~eqz#|f9H788}kOI&i75Y58oH{QIFM42Ep>8qShH;bu5ME+#gFzQBQbzM^SqKjic32g7F!)M2S4w=vUT3NG^)-QX_)`4!G*#F zl-@_q{bpy|X|iXVT8grZt=`RAwm`3irO}6^r3R4Ask!bzCLQIn8|(0-K`b&~cPO>OUH_Idv1fH!QCl4Ch0PrRf>5=BnA|u=AS>crHk~Ttd1&^*E3SrV)H{7nPYPd z)Hrrb4Ap6CX-26QtCp^Pugyj$*7YSbMN>rcGCR{*k7{52qP&|@#_d3FnCLl!It0cl zcZBxFRs|izldrjLB>gjjmQlEtuJ!Rid(Oz|@*3>Hqo=H(=QdATTDouL49{I zNB6zwlH^i2yc>P*)~+B z%`O;*p{w&?JwZX!r9RHpC4O{1#47A-mou>Ynt)$SVD2XxlkNm2`>;gH>6+y&32s(m zXIVk%+05-$C;D(%VM-N(1^DUFvekz9pS8!rClNjl8{}ekw_61&VW9SGl_Y*M z$CZ<=BNU02&sNo@UE*mADT;dl6=FQARi^DFQc$+No7r^s+P~~ zyb=;7&ZCqb)ID?P_?=V+)gPN|ZQbQF%u}qHJ(bMQQQo%<_wZjF2_t9XQ?Cw`?g%)k z@Y7xii)`_0pTXiP|71B9hGzd;Zrf|FT(r}FF%ic~BrB84HQArYO7ttn{d0;Hn_c`lTa%xH#v4naFkZ)MVXWse8!E(bRp<;qUA~a9>?kJT z;%tQ13&H$Y=v!b*JWjnUSKwM79y+D?t)n>f^g>eF-F3(&tXz{tZFz`NZ+5ZqaI5?_ z8WF>JE^;=4tHO8KRm|=OuzUDz{XIc-b&Pgbp*CSYLjX7)EL)siC;=S_{2Ci0Ghk-B zOB*;B{a950oVt@kwVns`)SuFE+i*%^a>qokrH&Or$$qmuriA@`=kmU(nEskvRP)PU z)xUNW$-nuZ8n7$Xoz&zFmrU%V+vwUDj5!0&DZEdqyk}T2w31u= zqAi({s2lx}?^&HCE4&q;SM~Mvl|<6?sBPz&T=BBL^W}+{h{vXEne#ITvooLCa&6X$ z?#L@Ke;1NaitNHcS7B$UakEKOJ1~r8-P6`t@y3N!hk;`HGoh^${!JFqI}HdEpK({# z4_9n{H_bG2=)OXocsg7dK{wY7iUtupj9;G6_-aRwIYaGIcAhg$wWbaZZja(Ma-UCb z@^~U_$d$H$qAju2zKPo)w+2Vbda?9E6Z7LqO2CXVzC3maLgB~lm6sK*_2*OtoL?tF ziU`082FJm1;0h?MKUmCR6P%Rj>|sbHNu5N#vH9nKI-^_Avo)^_fNhcMx(EcBtsxhW zF7q)Q<(#a~6P+dyy?AA^8=U6FV*AS-86xvpD@i8SxGPQL>n`nACn8qCf1gSNJ5NK; z8|pN6-Y<#g`mK@9vOQGWt4~xta**$J*?clk)kN`HCUd6*1=Hcl|K720@}maw#w`FF z#xku(D8tYTj(>5`o#XZEjMp8jg&&biee@j|A586I1S1C*Oobg3s?fgOS|N;mWYg|b zVB_H|jcI3_t7^29MM#^sQ(E0*taT)qjO4)^)RX9_k%5Y=x8g#Dse|D9XE5D1o?? zRQO6iTjG#3R+KOu$i8CKsVkC5^3_SW_EL$#mD{fZsZ@xk(;1(iJ5+Jzb_ z=wm#>%?mDM5)`P-kw`*`+dSb=F&8QQqDrsJvI)cl%&JS5+1JBleZaYLdJc^Kg%F2E z+)Ed!nUDP+e~r~}TJdSNKY>5Jbeg9x9XB!K44Bcu{}P=1m!$@bqS`>rXk79@Ci4N>L1IB5 zo~!7&)RTLrRHHjH0_PL-?E6y0jwRdDJ&$TKx!O0_XUWn=)5|+!mQbd1>Fw1x z(mXj0sPG4^7?z`htYErC%pNh7LnIFFZL9n7tS0^6R$^;t*kHuR%KOY6g+kjwNgJId zOo@NK6l7T}0+9=Rbk#y$yG-l#`Fg^_WeSG4^>(%HqtXz%Sw`6w$*9QVSBF`0JhmH( zl_GNXqR{hXQpjHZ%BUFrp!&zk(E)YlP=7pM>6~sDS~b$R$X}{f&!BT#ZaMrUkI8o7M;_=9|-er~r0 zdn$NWV+A@ApM|xY*Gg2=NVMBT=J7xCF-VRA@0;*F90H~A%Nb2k*7j*-`n7<$c>0I7 z3cnfc9*a10!*-+i2J0yJLb@ED*9OuU>d;Ef8zdGxtkO8Ua?!&Psj$34hPZjB!wPkw z88f+t@d5f7I&+i~Vpx;|=q^bxAEzAc|9PTWflLiIWQfbU)A2U&Lg(g%W&ihKk)H6d>6$`pjK_xT#s((gtD$_LtBx zaL>4`@A`(H(c>X9Gvb=fV-FES0r=8qcNwHy)u6%6A zy2281Ppy2Ba1ST`n0&|9 zRA$9X>{ckbR!#Pm?|z1@olbl-1L(v&s=jYok^H?hATB8J1^DUZ_J%yyqXP+(Hd!0`jCZl z@42hF7KT?K!bc6x(}b6(MYiMa4vXFnc#0mO!*SO93|Fz}0jmgBB0kHLtXX6+W?rhw zS)8*pW@LEkq?+B}a!WeY2PlHN&*{)~=&ov;=LI=JVD7hCjy zoDP#fwq8G1B~+hei~LOOrv2lTeAsP)ghxfv1@L z8L{p(XBg4ynIH(qVf*_*-~;lfn!lBNvkZ)IZ{ck~T<7HkT|!ae$zJ`icuci;mUzC% zBHcdHNxRr?ekH)!WItaQu4ulP2jz%<S$$Cx(0+cse3O6{N3lmBAolVq^- zrATv`RnJgKjo0PGVr5}FEg!5rvU4%-WU^D-ojG#3PdHf;0EEyyfgn7!AQLOIJdcMA z9$^bQ8Vyq5p8K=l#oQO^5?*M&87u`U5)#2u#}LoEz#8eD zoQazMUNU83NW9?*Yy;Eplr*yPIxLX2$q!9>)kOcmlhxpd(hh5MzA?Cc*v!<1>~^`; z{VFH0*jEoV$PR0BgHsPdKN&Va?^XK~JDh|s!fHesPKUD*ym38Obm9Y+DiMoKy5xrs znup)caW-{uxA9x?zi_ZG$ylV4ZXd6v#NN)p;lkKiWm5@(ADp!5lvsyc%kmCiEv5!L zr^O}_8UEr|T`94gPo!hoTs;L5YtABtd4wE)9FM6!)a-MMU{k0$vP|7cE$`P_46pJC zMaLG9WwwSW0cM%{97l<_(Z54=UWAVNb~ zl*RL`^`+Od8B(K|NA`Wd$()+8cAApQ>KfI{T7IRc@;R(7>Rc(kP8Bn}`#o_DB%F!$XF6Y5GKm&ds@o@<5i&stpJ*4P6t!7LXMWVtv_|G5UB zJ0KGj4D6;5&D8p2vvz)XIQmxoT5H zF|GqEPBcTl2-UHmY0}72%OQ!q4acZTW{Oi41~p1_c)uMPF+B~o zm|(rl(4B$4Ex)-Ix7~VIkmj+X&yTKB&LvzP1o!DF@zB&?Z;s;Ir=3clY-{$3HyH7~ z`OTrY-}hGJSbujD@8ih6Ve#CUz1(*{V(muWrFIo?Hn8+)ov{r5^i~eWVf!6arXMu? z<`RxyFi_teXOXyTIu?-U%k-nNEUTT6nU^9eUITI}=Z%d2`uji#ZOgW+Tr~SKA3a7$ zfjFmxjC5>srU$;Qg}Nu-sZ?&nrN>-w26`U!_kKN-H6!> z@Xej0u`Pw5Ia+Jd0a`mK&2K|vIOu@@CpXR;!Ei&iQwJ>#0PCZg^qBke?%GjhCNvDy zYir+w?VsoyFq0eMw3E+M@|Wj9Z<*xzk<9s|*TiKjockCLIz68^(w2R&oe6HwETSDC zAYQL7=92X14h+~BRSM%5R}qcJ4rxGIvddbTe^12)jn|fhl%Qeg+B72)P3d};^Rem} zCO7`URAyJ%PIt*?vhzKQh1gWL1MgXoNT}9P!*ZDZb8nX~r`4 zQ4Fu0k2;+XE9O-t#_ZQ;|2=Y$?p@X<`io7jE1skCF?b>iE*!K*fKy3G#s+g6wJ`Sw zU5JO;v6h5*3k^pkyC^FQ;$iPHCPMD4K>YsFhI&#D_qxlGwkS}5uUx^J_hpZZe2uZG z&y3bvdUjiX>P2*(NT&7qSiKs`To-1YyPI?oS?KPevDxSHXjdxqzM_qquNLg`9SY7C zp(Oh6?Fguw##l=Lp7Z+CaOoxIUNX6Tmy{clbo`r8vLWlI!Lxtpj zM9X?P#7Doy74M&d@dT)w2RPXWz~vnM;P(PYLQGsjL<}M#A!{NoE(eClfu%*nq~*lK zXndz+{|~^^+sPFX^8W+i!a=e30LK437<(fEg6#d^I6*-{AXhJUe@A;CILO=2x%fnZ r>0XKIKP3~_0FQeO7uNvzBZudX?(hI|A*P`FQ5=}Mp4wX#yQu#G?mD~u literal 0 HcmV?d00001 diff --git a/raindropGameCode/Catcher.pde b/raindropGameCode/Catcher.pde index 928925c..4361d16 100644 --- a/raindropGameCode/Catcher.pde +++ b/raindropGameCode/Catcher.pde @@ -1,4 +1,35 @@ -//class Catcher(){ - // PVector loc; - //float diam// - \ No newline at end of file +class Catcher {//declare the bucket + float diam; // radius + color co; // color + PVector loc; // location + + Catcher(float tempD) {//intialize/call + diam = tempD; + co = color(128, 128, 128); + loc = new PVector(0,0); + } + + void setLocation(PVector m) {//where the bucket will temporarily be + loc.set(m.x,m.y); + } + + void display() {//function for bucket appearance + noStroke(); + fill(co); + ellipse(loc.x,loc.y, diam*4, diam*4); + } + + // A function that returns true or false based on + // if the catcher intersects a raindrop + boolean intersect(Raindrop d) { + // Calculate distance + float distance = loc.dist(d.loc); + + // Compare the length of the bucket to the raindrop + if (distance < diam + d.diam) { + return true; + } else { + return false; + } + } +} \ No newline at end of file diff --git a/raindropGameCode/Raindrop.pde b/raindropGameCode/Raindrop.pde index ae6cfa0..4d2d0f9 100644 --- a/raindropGameCode/Raindrop.pde +++ b/raindropGameCode/Raindrop.pde @@ -1,34 +1,34 @@ -class Raindrop { - PVector loc, vel, acc; +class Raindrop {//declare Raindrop + PVector loc, vel, acc;//variable for length, speed, color float diam; - color c; + color co; - Raindrop() { + + Raindrop() {//call functionality and intialize diam=20; loc=new PVector(random(0, width), 0); vel=PVector.random2D(); - acc=new PVector(0, 5); - c= color(204, 255, 255); + acc=new PVector(0, .1); + co= color(204, 255, 255); } - void display() { - fill(c); + void display() {//function so raindrops appear + fill(co); noStroke(); triangle(loc.x-diam/2, loc.y, loc.x, loc.y-40, loc.x+diam/2, loc.y); ellipse(loc.x, loc.y, diam, diam); } - - void fall() { - vel.add(acc); - loc.add(vel); - } - boolean isInContactWith(PVector m) { - if (loc.dist(m) < diam/2) { + boolean isInContactWith() {//raindrop is in contact with the mouse, does something + if (loc.y>height+diam/2) { return true; } else { - return false; + return false;//disappears } } - void reset() { + void fall() {//how the raindrops fall + vel.add(acc); + loc.add(vel); + } + void reset() {//when its over the screen, disappears loc.y=0; vel.y=0; } diff --git a/raindropGameCode/Timer.pde b/raindropGameCode/Timer.pde new file mode 100644 index 0000000..d5cb319 --- /dev/null +++ b/raindropGameCode/Timer.pde @@ -0,0 +1,28 @@ +class Timer {//declare the timer + int s; + int m; + + Timer() {//initialize + s=0; + m=0; + } + + void display() {//call functionality + fill(153, 204, 0); + textAlign(CENTER);//how the text will look like + textSize(50); + delay(1000); + if (s<=59) {//before it reaches 60 seconds, only the right hand side will change + text(m+":"+s, width/2, height/2); + s=s+1; + } else {//the left side will now change after 60 seconds + m=m+1; + s=0; + text(m+";"+s, width/2, height/2); + } + } + void reset(){//function so time resets when game over + m=0; + s=0; + } +} \ No newline at end of file diff --git a/raindropGameCode/background.jpg b/raindropGameCode/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..998a7cdb77053802ed64cab543770f43bff9b6fd GIT binary patch literal 8879 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 r= new ArrayList(); //declare a new ArrayList called r for the raindrop +Catcher C;//declare Bucket +Timer timer;//declare Timer +PImage background; // On your own, create an array of Raindrop objects instead of just one // Use the array instead of the single object // You can start out by just using the single Raindrop as you test +int mode=0;//0 is intro, 1 is normal play, 2 means game has ended + +void setup() {//run settings once -void setup() { - size(1200, 800); - mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} - r = new Raindrop(); //Initialize r. The parameters used are the initial x and y positions + mouse = new PVector(); //initialize mouse PVector. value is irrelevant since it will be set at the start of void draw(){} + //Initialize r. The parameters used are the initial x and y positions + C= new Catcher(20);//initalize catcher + timer= new Timer();//initialize timer + background= loadImage("background.jpg"); + for ( int i=0; i<5; i++) {//for loop and arraylist. + r.add(new Raindrop ()); + } } +void draw() {//run settings in loop + if (mode==0) {//intro + fill(0, 255, 0); + imageMode(CENTER);//background + image(background, width/2, height/2); + textSize(20); + textAlign(CENTER); + fill(255); + text("WELCOME TO THE DROP", width/2, height/2-50); + text("YOU ARE TIMED. CATCH ALL THE RAINDROPS OR ELSE.", width/2, height/2+25); + text("PRESS ENTER TO START", width/2, height/2+50); + if (keyPressed==true) { + //if(keyCode==ENTER) + mode=1; + } + } -void draw() { - mouse.set(mouseX, mouseY); //set value of mouse as mouseX,mouseY - background(0, 200, 255); - r.fall(); //make the raindrop fall. It should accelerate as if pulled towards the ground by earth's gravity - r.display(); //display the raindrop - if (r.isInContactWith(mouse)) { //check to see if the raindrop is in contact with the point represented by the PVector called mouse - r.reset(); //if it is, reset the raindrop + if (mode==1) {//normal play + background(0); + mouse.set(mouseX, mouseY);//set value of mouse as mouseX,mouseY + C.setLocation(mouse);//call functions for catcher and raindrop + C.display(); + timer.display();//call function for timer + for (int i=0; i height + rd.diam/2) { //check to see if the raindrop goes below the bottom of the screen + // r.remove(i); //if it does, reset the raindrop + //} + if (rd.loc.y>height) { + mode=2; + } + } } - if (r.loc.y > height + r.diam/2) { //check to see if the raindrop goes below the bottom of the screen - r.reset(); //if it does, reset the raindrop + if (mode==2) {//game over screen + background(0); + fill(0, 255, 0); + textSize(20); + textAlign(CENTER); + text("GAME", width/2, height/2); + text("OVER", width/2, height/2+75); + text("PRESS ENTER TO PLAY AGAIN", width/2, height/2+150); + timer.reset(); + if ( keyPressed==true) { + //if(keyCode==ENTER) + mode=0;//returns to the beginning screen and timer is reset + } } } \ No newline at end of file