From: James Edward Gray II Date: 2006-10-02T05:13:33+09:00 Subject: Fwd: #96 Story Generator --Apple-Mail-1-1037783042 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Begin forwarded message: > From: "Vianney Lecroart" > Date: October 1, 2006 12:27:39 PM CDT > To: submission@rubyquiz.com > Subject: #96 Story Generator > > Made with a friend in a pair programming on the web session, we wrote > our first little ruby application for the Quiz. It s a game company > simulation story generator. > > See ya > > acemtp & Drealmer --Apple-Mail-1-1037783042 Content-Transfer-Encoding: quoted-printable Content-Type: application/octet-stream; x-unix-mode=0666; name=main.rb Content-Disposition: attachment; filename=main.rb class=20Array=0D=0A=20=20def=20rnd_elem=0D=0A=20=20=20=20at(rand(size))=20= unless=20empty?=0D=0A=20=20end=0D=0Aend=0D=0A=0D=0Aclass=20Employee=0D=0A= =20=20=0D=0A=20=20def=20Employee.generate_name=0D=0A=20=20=20=20= first_name=20=3D=20["Mary",=20"Patricia",=20"Linda",=20"Sharon",=20= "Lisa",=20"Carol",=20"Karen",=20"Jessica"]=0D=0A=20=20=20=20last_name=20= =3D=20["Doe",=20"Jobs",=20"Wills",=20"Smith",=20"Jonhson",=20"Wiliams",=20= "Jones",=20"Brown",=20"Davis",=20"Miller"=20,=20"Martin",=20"Thomas",=20= "Moore"=20]=0D=0A=20=20=20=20"#{first_name.rnd_elem}=20= #{last_name.rnd_elem}"=0D=0A=20=20end=0D=0A=0D=0A=20=20def=20initialize=0D= =0A=20=20=20=20@level=20=3D=20rand(5)=0D=0A=20=20=20=20@name=20=3D=20= Employee.generate_name=0D=0A=20=20end=0D=0A=20=20=0D=0A=20=20def=20=20= to_s=0D=0A=20=20=20=20=20["Clueless",=20"Noob",=20"Average",=20= "Skilled",=20"Cowboy"].at(@level)=20+=20"=20#{name}=20#{@name}"=0D=0A=20=20= end=0D=0A=0D=0Aend=0D=0A=0D=0Aclass=20Manager=20<=20Employee=0D=0A=20=20= def=20name=0D=0A=20=20=20=20"manager"=0D=0A=20=20end=0D=0Aend=0D=0A=0D=0A= class=20Coder=20<=20Employee=0D=0A=0D=0A=20=20def=20name=0D=0A=20=20=20=20= "coder"=0D=0A=20=20end=0D=0A=20=20=0D=0A=20=20def=20iterate(project)=0D=0A= =20=20=20=20res=20=3D=20methods.find_all=20{=20|m|=20m[0,5]=20=3D=3D=20= "work_"=20}.rnd_elem=0D=0A=20=20=20=20puts=20"#{self}=20= #{method(res).call(project)}=20on=20#{project}"=0D=0A=20=20end=0D=0A=20=20= =0D=0A=20=20def=20work_feature(project)=0D=0A=20=20=20=20= project.nb_features=20+=3D=201=0D=0A=20=20=20=20"adds=20a=20feature"=20+=20= add_bug(project)=0D=0A=20=20end=0D=0A=20=20=0D=0A=20=20def=20= work_find_bug(project)=0D=0A=20=20=20=20bug=20=3D=20= project.bugs.rnd_elem=0D=0A=20=20=20=20if=20!bug=0D=0A=20=20=20=20=20=20= work_feature(project)=0D=0A=20=20=20=20else=0D=0A=20=20=20=20=20=20= fix_level=20=3D=20rand(@level)=0D=0A=20=20=20=20=20=20if=20fix_level=20= >=3D=20bug.complexity=0D=0A=20=20=20=20=20=20=20=20"manages=20to=20fix=20= #{bug}"=0D=0A=20=20=20=20=20=20=20=20project.bugs.delete=20bug=0D=0A=20=20= =20=20=20=20else=0D=0A=20=20=20=20=20=20=20=20"attempts=20to=20fix=20= #{bug}=20and=20fails"=0D=0A=20=20=20=20=20=20end=0D=0A=20=20=20=20end=0D=0A= =20=20end=0D=0A=20=20=0D=0A=20=20def=20add_bug(project)=0D=0A=20=20=20=20= comp=20=3D=20rand(5)=0D=0A=20=20=20=20if=20comp=20>=20@level=0D=0A=20=20=20= =20=20=20project.bugs=20<<=20Bug.new(comp)=0D=0A=20=20=20=20=20=20= project.nb_bugs=20+=3D1=0D=0A=20=20=20=20=20=20"=20and=20adds=20= #{project.bugs.last}"=0D=0A=20=20=20=20else=0D=0A=20=20=20=20=20=20""=0D=0A= =20=20=20=20end=0D=0A=20=20end=0D=0A=20=20=0D=0Aend=0D=0A=0D=0Aclass=20= Bug=0D=0A=20=20attr_reader=20:complexity=0D=0A=20=20attr_reader=20:bid=0D= =0A=0D=0A=20=20@@sbid=20=3D=201=0D=0A=0D=0A=20=20def=20to_s=0D=0A=20=20=20= =20"the=20"+["very=20simple",=20"simple",=20"average",=20"hard",=20= "hardcore"].at(complexity)+"=20bug=20"+bid.to_s=0D=0A=20=20end=0D=0A=0D=0A= =20=20def=20initialize(complexity)=0D=0A=20=20=20=20@complexity=20=3D=20= complexity=0D=0A=20=20=20=20@bid=20=3D=20@@sbid=0D=0A=20=20=20=20@@sbid=20= +=3D=201=0D=0A=20=20end=0D=0Aend=0D=0A=0D=0Aclass=20Project=0D=0A=20=20=0D= =0A=20=20attr_accessor=20:bugs=0D=0A=20=20attr_accessor=20:nb_bugs=0D=0A=20= =20attr_accessor=20:nb_features=0D=0A=20=20=0D=0A=20=20def=20= initialize(name=20=3D=20nil)=0D=0A=20=20=20=20@name=20=3D=20if=20name=20= then=20name=20else=20Project.generate_name=20end=0D=0A=20=20=20=20@bugs=20= =3D=20Array.new=0D=0A=20=20=20=20@nb_bugs=20=3D=200=0D=0A=20=20=20=20= @nb_features=20=3D=200=0D=0A=20=20end=0D=0A=20=20=0D=0A=20=20def=20= Project.generate_name=0D=0A=20=20=20=20adj=20=3D=20["Super",=20"Mega",=20= "Turbo",=20"Ultimate"]=0D=0A=20=20=20=20noun=20=3D=20["Racer",=20= "Fighter",=20"Puzzle",=20"Adventure"]=0D=0A=20=20=20=20compl=20=3D=20= ["of=20Doom",=20"from=20Hell",=20"Deluxe",=20"Unlimited"]=0D=0A=20=20=20=20= "#{adj.rnd_elem}=20#{noun.rnd_elem}=20#{compl.rnd_elem}"=0D=0A=20=20end=0D= =0A=20=20=0D=0A=20=20def=20to_s=0D=0A=20=20=20=20"the=20#{@name}=20= project"=0D=0A=20=20end=0D=0A=20=20=0D=0A=20=20def=20summarize=0D=0A=20=20= =20=20"Summary:=20Project=20#{@name}=20has=20#{@nb_features}=20features=20= and=20#{@bugs.size}=20bugs=20left=20out=20of=20#{@nb_bugs}"=0D=0A=20=20= end=0D=0Aend=0D=0A=0D=0Aclass=20Company=0D=0A=20=20=0D=0A=20=20= attr_accessor=20:projects=0D=0A=0D=0A=20=20def=20recruit(employee)=0D=0A=20= =20=20=20@employees=20<<=20employee.new=0D=0A=20=20end=0D=0A=0D=0A=20=20= def=20initialize()=0D=0A=20=20=20=20@employees=20=3D=20Array.new=0D=0A=20= =20=20=20@projects=20=3D=20Array.new=0D=0A=20=20end=0D=0A=0D=0A=20=20def=20= employees(type=20=3D=20nil)=0D=0A=20=20=20=20@employees.find_all=20{=20= |e|=20!type=20or=20e.kind_of?=20type=20}=0D=0A=20=20end=0D=0A=0D=0A=20=20= def=20random_employee(type=20=3D=20nil)=0D=0A=20=20=20=20subset=20=3D=20= employees(type)=0D=0A=20=20=20=20subset[rand(subset.size)]=0D=0A=20=20= end=0D=0A=20=20=0D=0A=20=20def=20summarize=0D=0A=20=20=20=20status=20=3D=20= ["ships!",=20"is=20cancelled!"].rnd_elem=0D=0A=20=20=20=20puts=20= "**************************"=0D=0A=20=20=20=20@projects.each=20{=20|p|=20= puts=20"#{p.summarize}=20#{status}"=20}=0D=0A=20=20end=0D=0Aend=0D=0A=0D=0A= ####################################=0D=0A=0D=0Aputs=20"**=20Game=20= Company=20Simulator=20**"=0D=0A=0D=0Acompany=20=3D=20Company.new=0D=0A=0D= =0A3.times=20do=20company.projects=20<<=20Project.new=20end=0D=0A=0D=0A= 10.times=20do=20company.recruit(Coder)=20end=0D=0A=0D=0A10.times=20do=20= company.employees(Coder).each=20{|e|=20= e.iterate(company.projects.rnd_elem)}=20end=0D=0A=0D=0Acompany.summarize=0D= =0A=0D=0Aputs=20"**=20Company=20goes=20bankrupt=20**"= --Apple-Mail-1-1037783042 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed --Apple-Mail-1-1037783042--