From 88f37c05cf4fa37491e708993afb2bf289e0b9e1 Mon Sep 17 00:00:00 2001 From: rustushki Date: Thu, 28 Sep 2006 19:06:18 +0000 Subject: [PATCH] --- COPYING | 339 +++++++++++++++++++++++++++++++++++++++++ Makefile | 22 +++ battle.py | 147 ++++++++++++++++++ consolecontroller.py | 77 ++++++++++ consoleview.py | 99 ++++++++++++ data/fighter/archer | 11 ++ data/fighter/imp1 | 11 ++ data/fighter/imp2 | 11 ++ data/fighter/imp3 | 11 ++ data/fighter/imp4 | 11 ++ data/fighter/imp5 | 11 ++ data/fighter/imp6 | 11 ++ data/fighter/swordsman | 11 ++ data/fighter/thief | 11 ++ data/party/party1 | 2 + data/party/party2 | 2 + docs/diagrams/rpg_rev0.0.0.svg | 4 + docs/diagrams/rpg_rev0.0.1.png | Bin 0 -> 63293 bytes docs/diagrams/rpg_rev0.1.0.png | Bin 0 -> 89481 bytes docs/diagrams/rpg_rev0.1.1.png | Bin 0 -> 106326 bytes docs/diagrams/rpg_rev0.1.2.png | Bin 0 -> 120036 bytes docs/notes/data_layout | 11 ++ docs/notes/itemModTable | 9 ++ docs/reqs/rpg_rev0.1.0.txt | 50 ++++++ docs/reqs/rpg_rev0.1.1.txt | 231 ++++++++++++++++++++++++++++ docs/reqs/rpg_rev0.1.2.txt | 252 ++++++++++++++++++++++++++++++ equiption.py | 110 +++++++++++++ event.py | 66 ++++++++ fighter.py | 143 +++++++++++++++++ main.py | 30 ++++ party.py | 70 +++++++++ 31 files changed, 1763 insertions(+) create mode 100644 COPYING create mode 100644 Makefile create mode 100644 battle.py create mode 100644 consolecontroller.py create mode 100644 consoleview.py create mode 100644 data/fighter/archer create mode 100644 data/fighter/imp1 create mode 100644 data/fighter/imp2 create mode 100644 data/fighter/imp3 create mode 100644 data/fighter/imp4 create mode 100644 data/fighter/imp5 create mode 100644 data/fighter/imp6 create mode 100644 data/fighter/swordsman create mode 100644 data/fighter/thief create mode 100644 data/party/party1 create mode 100644 data/party/party2 create mode 100644 docs/diagrams/rpg_rev0.0.0.svg create mode 100644 docs/diagrams/rpg_rev0.0.1.png create mode 100644 docs/diagrams/rpg_rev0.1.0.png create mode 100644 docs/diagrams/rpg_rev0.1.1.png create mode 100644 docs/diagrams/rpg_rev0.1.2.png create mode 100644 docs/notes/data_layout create mode 100644 docs/notes/itemModTable create mode 100644 docs/reqs/rpg_rev0.1.0.txt create mode 100644 docs/reqs/rpg_rev0.1.1.txt create mode 100644 docs/reqs/rpg_rev0.1.2.txt create mode 100644 equiption.py create mode 100644 event.py create mode 100644 fighter.py create mode 100755 main.py create mode 100644 party.py diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..d511905 --- /dev/null +++ b/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3ea091e --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +######################################################## +# Copyright (c) 2006 Russ Adams, Sean Eubanks, Asgard Contributors +# This file is part of Asgard. +# Asgard is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# Asgard is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Asgard; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +######################################################## + +run: + - ./main.py +clean: + - rm *.pyc diff --git a/battle.py b/battle.py new file mode 100644 index 0000000..35bfafd --- /dev/null +++ b/battle.py @@ -0,0 +1,147 @@ +######################################################## +# Copyright (c) 2006 Russ Adams, Sean Eubanks, Asgard Contributors +# This file is part of Asgard. +# Asgard is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# Asgard is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Asgard; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +######################################################## + +from os import listdir +from time import * +from fighter import * +from party import * +from event import * + +class Battle: + + def __init__(self): + self.__currentTime = 0 + + + ### Creating parties ### + # Reading data for parties + dir = listdir('./data/party/') + for p in dir: + + if p[0] == ".": + continue + + p = './data/party/'+p + fptr = open(p,'r') + lines = fptr.readlines() + if int(lines[0]) == 1: + self.__party1 = Party(lines[1].strip()) + elif int(lines[0]) == 2: + self.__party2 = Party(lines[1].strip()) + fptr.close() + + ### Creating fighters ### + # Reading data for fighters + dir = listdir('./data/fighter/') + for f in dir: + # f cannot be a "." file + if f[0] == '.': + continue + # Change file into pathname + f = './data/fighter/'+f + # Open file f for 'r'eading + fptr = open(f,'r') + # Place lines in file f into list + lines = fptr.readlines() + + tom = round((1/float(lines[4]))*100) + equip = Equiption(lines[6].strip(),lines[7].strip(),lines[8].strip(),lines[9].strip()) + # Create fighter(name,hp,str,dex,head,l,r,body) + fighter1 = Fighter(lines[0].strip(),int(lines[2]),int(lines[3]),int(lines[4]),tom,bool(int(lines[5])),equip) + + + # Add fighter to respective party (1 or 2) + if int(lines[10]) == 1: + self.__party1.addFighter(fighter1) + elif int(lines[10]) == 2: + self.__party2.addFighter(fighter1) + # Close file f + fptr.close() + + def isOver(self): + """ Is battle over?""" + + return not self.__party1.isAlive() or not self.__party2.isAlive() + + def nextTurn(self): + """ Execute next iteration in gameloop.""" + + sleep(.1) + + wereEvents = False + + # execute all available events + while self.executeNextEvent(): + # if there was at least one event + wereEvents = True + continue + + self.__currentTime += 1 + + return wereEvents + + def executeNextEvent(self): + """ Execute next event in event queue.""" + + if self.isOver(): + return False + + # Try to get an event from party1 + event = self.__party1.getNextEvent(self.__party2,self.__currentTime,self.__controller) + + # If there was one, execute and return true + if event != None: + self.__view.printEvent(event) + event.execute() + return True + + # Try to get an event from party2 + event = self.__party2.getNextEvent(self.__party1,self.__currentTime,self.__controller) + + # If there was one, execute and return true + if event != None: + self.__view.printEvent(event) + event.execute() + return True + + # Otherwise, notify that there are no more events at this time. + return False + + def getCurrentTime(self): + """ Retrieve current time.""" + return self.__currentTime + + def setCurrentTime(self,t): + """ Establish current time.""" + self.__currentTime = t + + def getParty1(self): + """ Retrieve party1.""" + return self.__party1 + + def getParty2(self): + """ Retrieve party2.""" + return self.__party2 + + def setView(self,v): + """ Establish view.""" + self.__view = v + + def setController(self,c): + """ Establish controller.""" + self.__controller = c diff --git a/consolecontroller.py b/consolecontroller.py new file mode 100644 index 0000000..ca07f8c --- /dev/null +++ b/consolecontroller.py @@ -0,0 +1,77 @@ +######################################################## +# Copyright (c) 2006 Russ Adams, Sean Eubanks, Asgard Contributors +# This file is part of Asgard. +# Asgard is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# Asgard is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Asgard; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +######################################################## + +from battle import * + +class ConsoleController: + def __init__(self,battle,view,debug): + self.__battle = battle + self.__view = view + self.__debug = debug + + battle.setController(self) + battle.setView(view) + view.setController(self) + view.setBattle(battle) + + self.__gameLoop() + + def getCommand(self,p,f): + + command = [] + + print "\033[1;34m[SELCT]\033[1;0m Turn:" + f.getName() + "; HP:" + str(f.getHp()) + + self.__view.printEnemySelectMenu(p) + n = raw_input("% ") + d = p.getFighter(int(n)-1) + + self.__view.printEventTypeMenu(f) + n = raw_input("% ") + t = f.getEventTypes()[int(n)-1] + + return [d,t] + + def getDebug(self): + return self.__debug + + def setDebug(self,d): + self.__debug = d + + def __gameLoop(self): + """Retrieves events from Parties and Executes all Events in queue per iteration""" + + print "Battle Starts." + self.__view.printState() + + # initialize the event checker boolean + wereEvents = False + + while not self.__battle.isOver(): + # next iteration + wereEvents = self.__battle.nextTurn() + + # only print out state if something actually happened + if wereEvents: + self.__view.printState() + + if self.__battle.getParty1().isAlive(): + print "Victory Fanfare. Heros win." + else: + print "Game Over. Orcs win." + diff --git a/consoleview.py b/consoleview.py new file mode 100644 index 0000000..86f7589 --- /dev/null +++ b/consoleview.py @@ -0,0 +1,99 @@ +######################################################## +# Copyright (c) 2006 Russ Adams, Sean Eubanks, Asgard Contributors +# This file is part of Asgard. +# Asgard is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# Asgard is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Asgard; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +######################################################## + +class ConsoleView: + """Viewer object for Asgard""" + + def __init__(self): + pass + + def printParty(self, p): + """Show party stats.""" + + print "\033[1;35m[PARTY]\033[1;0m NAME:"+p.getName() + + for f in p.getFighters(): + self.printFighter(f) + + def printFighter(self, f): + """Show fighter stats.""" + + print "\033[1;35m[FGHTR]\033[1;0m NAME:"+f.getName()+"\tHP:"+str(f.getHp())+"\tPOWR:"+str(f.getAttack())+"\tDFNS:"+str(f.getDefense())+"\tEVAD:"+str(f.getEvade()) + + #Uncomment this when getEquiption is implemented + #printEquiption(f.getEquiption()) + + def printEvent(self, e): + """Show Event data.""" + + print "\033[1;33m[EVENT]\033[1;0m ATKR:" + e.getAttacker().getName() + "\tDfdr:" + e.getDefender().getName() + "\tTYPE:" + e.getType() + + def printEquiption(self, eq): + """Show equiption for fighter.""" + + print "\033[1;36m[EQUIP]\033[1;0m HEAD:" + eq.getHead() + "\tARMR:" + eq.getArmor() + "\tLEFT:" + eq.getLeft() + "\tRGHT:" + eq.getRight() + + def printEventTypeMenu(self, f): + """Show battle menu options for fighter.""" + + i = 1 + menu = "" + for e in f.getEventTypes(): + menu += "("+str(i)+")"+" "+e + i += 1 + print menu + + def printEnemySelectMenu(self, p): + """Show enemy selection options for fighter""" + + i = 1 + menu = "" + for f in p.getFighters(): + # Dead fighters tell no tales... + if not f.isAlive(): + i += 1 + continue + + # Create enemy selection menu + menu += "("+str(i)+")"+" "+f.getName()+" "+"HP: "+str(f.getHp())+"\t" + + i += 1 + + print menu + + def printState(self): + """Show state.""" + + if self.__controller.getDebug(): + # Retrieve parties 1 and 2 + party1 = self.__battle.getParty1() + party2 = self.__battle.getParty2() + + # Print Party1 + self.printParty(party1) + + # Print Party2 + self.printParty(party2) + + print "=============================================================" + + def setBattle(self,b): + self.__battle = b + + def setController(self,c): + self.__controller = c diff --git a/data/fighter/archer b/data/fighter/archer new file mode 100644 index 0000000..11dff6c --- /dev/null +++ b/data/fighter/archer @@ -0,0 +1,11 @@ +Archer +5 +60 +20 +8 +1 +Helm +Chain Mail +Bow +Shield +1 diff --git a/data/fighter/imp1 b/data/fighter/imp1 new file mode 100644 index 0000000..1e48e62 --- /dev/null +++ b/data/fighter/imp1 @@ -0,0 +1,11 @@ +Vrigka +4 +35 +4 +3 +0 +Helm +Chain Mail +Sword +Shield +2 diff --git a/data/fighter/imp2 b/data/fighter/imp2 new file mode 100644 index 0000000..e1b066d --- /dev/null +++ b/data/fighter/imp2 @@ -0,0 +1,11 @@ +Rodagog +4 +40 +4 +5 +0 +Helm +Chain Mail +Sword +Shield +2 diff --git a/data/fighter/imp3 b/data/fighter/imp3 new file mode 100644 index 0000000..a0c78f9 --- /dev/null +++ b/data/fighter/imp3 @@ -0,0 +1,11 @@ +Kabugbu +4 +25 +9 +6 +0 +Helm +Chain Mail +Sword +Shield +2 diff --git a/data/fighter/imp4 b/data/fighter/imp4 new file mode 100644 index 0000000..aa0bf25 --- /dev/null +++ b/data/fighter/imp4 @@ -0,0 +1,11 @@ +Kagan +4 +30 +4 +5 +0 +Helm +Chain Mail +Sword +Shield +2 diff --git a/data/fighter/imp5 b/data/fighter/imp5 new file mode 100644 index 0000000..534e18a --- /dev/null +++ b/data/fighter/imp5 @@ -0,0 +1,11 @@ +Shomdud +4 +60 +10 +5 +0 +Helm +Chain Mail +Sword +Shield +2 diff --git a/data/fighter/imp6 b/data/fighter/imp6 new file mode 100644 index 0000000..c7ba446 --- /dev/null +++ b/data/fighter/imp6 @@ -0,0 +1,11 @@ +Crunxor +3 +30 +7 +5 +0 +Helm +Chain Mail +Sword +Shield +2 diff --git a/data/fighter/swordsman b/data/fighter/swordsman new file mode 100644 index 0000000..a82e672 --- /dev/null +++ b/data/fighter/swordsman @@ -0,0 +1,11 @@ +Swordsman +3 +200 +25 +6 +1 +Helm +Cloak +Sword +Shield +1 diff --git a/data/fighter/thief b/data/fighter/thief new file mode 100644 index 0000000..bd4c306 --- /dev/null +++ b/data/fighter/thief @@ -0,0 +1,11 @@ +Thief +5 +150 +12 +9 +1 +Helm +Cloak +Staff +Shield +1 diff --git a/data/party/party1 b/data/party/party1 new file mode 100644 index 0000000..421877f --- /dev/null +++ b/data/party/party1 @@ -0,0 +1,2 @@ +1 +The Heros diff --git a/data/party/party2 b/data/party/party2 new file mode 100644 index 0000000..1d041f3 --- /dev/null +++ b/data/party/party2 @@ -0,0 +1,2 @@ +2 +The Villains diff --git a/docs/diagrams/rpg_rev0.0.0.svg b/docs/diagrams/rpg_rev0.0.0.svg new file mode 100644 index 0000000..32bd46f --- /dev/null +++ b/docs/diagrams/rpg_rev0.0.0.svg @@ -0,0 +1,4 @@ + + +Fighter- name: string- level: int- hp: int- strength: int- dexterity: int- timeOfMove: int+ getName(): string+ setName(in name: string): void+ getHp(): int+ setHp(in hp: int): void+ getAttack(): int+ getDefense(): int+ getEvade(): int+ getStrength(): int+ setStrength(in strength: int): void+ getDexterity(): int+ setDexterity(in dexterity: int): void+ move(in enemy: Party): Fighter+ getTimeOfMove(): int+ setTimeOfMove(in time: int): voidEquiption- head: string- armor: string- left: string- right: string+ getHead(): string+ setHead(in head: string): void+ getArmor(): string+ setArmor(in armor: string): void+ getLeft(): string+ setLeft(in left: string): void+ getRight(): string+ setRight(in right: string): void+ computeAtkMod: int+ computeDefMod: int+ computeEvaMod(): intequiped byParty+ isAlive(): boolean+ checkMoves(enemy: Party): list(Event)+ getFighter(in num: int): Fighter+ sizeOfParty(): int1..6Battle- currentTime: int+ gameLoop(): void+ nextEvent(): void+ addEvent(): void2Event- attacker: Fighter- defender: Fighter+ getAttacker(): Fighter+ getDefender(): Fighter+ executeEvent(): void* \ No newline at end of file diff --git a/docs/diagrams/rpg_rev0.0.1.png b/docs/diagrams/rpg_rev0.0.1.png new file mode 100644 index 0000000000000000000000000000000000000000..c10126f10bc31b9655f368cbefd8cf9615f94478 GIT binary patch literal 63293 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 BJ0Ji6 literal 0 HcwPel00001 diff --git a/docs/diagrams/rpg_rev0.1.0.png b/docs/diagrams/rpg_rev0.1.0.png new file mode 100644 index 0000000000000000000000000000000000000000..8e18643b71851fb7c1936870e209ef20d8c5e7fc GIT binary patch literal 89481 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