You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

296 lines
7.3 KiB

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "character.h"
  5. Character character;
  6. void setCharacterHealthPoints (Character *character, int newHealthPoints){
  7. character->healthPoints = newHealthPoints;
  8. }
  9. int getCharacterHealthPoints (Character *character) {
  10. return character->healthPoints;
  11. }
  12. void setCharacterStrength (Character *character, int newStrength) {
  13. character->strength = newStrength;
  14. }
  15. int getCharacterStrength (Character *character) {
  16. return character->strength;
  17. }
  18. void setCharacterDexterity (Character *character, int newDexterity) {
  19. character->dexterity = newDexterity;
  20. }
  21. int getCharacterDexterity (Character *character) {
  22. return character->dexterity;
  23. }
  24. void setCharacterIntelligence (Character *character, int newIntelligence) {
  25. character->intelligence = newIntelligence;
  26. }
  27. int getCharacterIntelligence (Character *character) {
  28. return character->intelligence;
  29. }
  30. void setCharacterLevel (Character *character, int newLevel) {
  31. character->level = newLevel;
  32. }
  33. int getCharacterLevel (Character *character) {
  34. return character->level;
  35. }
  36. void setCharacterExp (Character *character, int newExp) {
  37. character->exp = newExp;
  38. }
  39. int getCharacterExp (Character *character) {
  40. return character->exp;
  41. }
  42. void setCharacterMaxExp (Character *character, int newMaxExp) {
  43. character->maxExp = newMaxExp;
  44. }
  45. int getCharacterMaxExp (Character *character) {
  46. return character->maxExp;
  47. }
  48. int calculateStatIncrease (Character *character, int amount) {
  49. return character->level*amount;
  50. }
  51. void setCharacterMaxHealthPoints (Character *character, int newMaxHealthPoints){
  52. character->maxHealthPoints = newMaxHealthPoints;
  53. }
  54. int getCharacterMaxHealthPoints (Character *character){
  55. return character->maxHealthPoints;
  56. }
  57. void setCharacterAttack (Character *character, int newAttack){
  58. character->attack = newAttack;
  59. }
  60. int getCharacterAttack (Character *character){
  61. return character->attack;
  62. }
  63. void setCharacterArmor (Character *character, int newArmor){
  64. character->armor = newArmor;
  65. }
  66. int getCharacterArmor (Character *character){
  67. return character->armor;
  68. }
  69. void setCharacterGold (Character *character, int newGold){
  70. character->gold = newGold;
  71. }
  72. int getCharacterGold (Character *character){
  73. return character->gold;
  74. }
  75. void setCharacterName (Character *character, char *newName) {
  76. strcpy(character->name,newName);
  77. }
  78. char* getCharacterName (Character *character) {
  79. return character->name;
  80. }
  81. int getWeaponAttack (Weapon *weapon) {
  82. return weapon->attack;
  83. }
  84. void setWeaponAttack (Weapon *weapon, int newAttack) {
  85. weapon->attack = newAttack;
  86. }
  87. int getWeaponDurability (Weapon *weapon) {
  88. return weapon->durability;
  89. }
  90. int setWeaponDurability (Weapon *weapon, int newDurability) {
  91. weapon->durability = newDurability;
  92. }
  93. void setCharacterWeaponClass (Character* character, int weaponClass) {
  94. character->weaponClass = weaponClass;
  95. }
  96. int getCharacterWeaponClass (Character* character) {
  97. return character->weaponClass;
  98. }
  99. void increaseStat (Character *character, int stat, int amount) {
  100. switch (stat)
  101. {
  102. case 1:
  103. character->strength += amount;break;
  104. case 2:
  105. character->dexterity += amount;break;
  106. case 3:
  107. character->intelligence += amount;break;
  108. case 4:
  109. character->healthPoints += amount;break;
  110. case 5:
  111. character->manaPoints += amount;break;
  112. case 6:
  113. character->level += amount;break;
  114. case 7:
  115. character->exp += amount;break;
  116. case 8:
  117. character->maxExp += amount;break;
  118. default:
  119. break;
  120. }
  121. }
  122. void levelUp (Character *character) {
  123. if (getCharacterExp(character) > getCharacterMaxExp(character)) {
  124. increaseStat(character,LEVEL,1);
  125. setCharacterExp(character,getCharacterExp(character)-getCharacterMaxExp(character));
  126. }
  127. }
  128. int calculateDamage (Character *character,Weapon *weapon) {
  129. switch (character->weaponClass)
  130. {
  131. case 1:
  132. return character->strength*weapon->attack;
  133. case 2:
  134. return character->dexterity*weapon->attack;
  135. case 3:
  136. return character->intelligence*weapon->attack;
  137. default:
  138. return 1;
  139. }
  140. }
  141. void setCharacterStatPoints (Character* character, int newStatPoints) {
  142. character->statPoints = newStatPoints;
  143. }
  144. int getCharacterStatPoints (Character* character) {
  145. return character->statPoints;
  146. }
  147. void initializeCharacter (Character *character,int weaponClass) {
  148. setCharacterHealthPoints(character,100);
  149. setCharacterStrength(character,10);
  150. setCharacterDexterity(character,10);
  151. setCharacterIntelligence(character,10);
  152. setCharacterLevel(character,1);
  153. setCharacterExp(character,0);
  154. setCharacterMaxExp(character,100);
  155. setCharacterMaxHealthPoints(character,100);
  156. setCharacterAttack(character,10);
  157. setCharacterArmor(character,0);
  158. setCharacterGold(character,0);
  159. setCharacterName(character,"Player");
  160. setCharacterWeaponClass(character,weaponClass);
  161. setCharacterStatPoints(character,0);
  162. }
  163. void setItemID (Item *item, int newID) {
  164. item->id = newID;
  165. }
  166. int getItemID (Item *item) {
  167. return item->id;
  168. }
  169. void setItemAmount (Item *item, int newAmount) {
  170. item->amount = newAmount;
  171. }
  172. int getItemAmount (Item *item) {
  173. return item->amount;
  174. }
  175. void setItemDamage (Item *item, int newDamage) {
  176. item->damage = newDamage;
  177. }
  178. int getItemDamage (Item *item) {
  179. return item->damage;
  180. }
  181. void setItemHealing (Item *item, int newHealing) {
  182. item->healing = newHealing;
  183. }
  184. int getItemHealing (Item *item) {
  185. return item->healing;
  186. }
  187. void setItemMana (Item *item, int newMana) {
  188. item->mana = newMana;
  189. }
  190. int getItemMana (Item *item) {
  191. return item->mana;
  192. }
  193. void setItemName (Item *item, char newName[]) {
  194. strcpy(item->name,newName);
  195. }
  196. char* getItemName (Item *item) {
  197. return item->name;
  198. }
  199. void setCharacterStatus (Character *character, int newStatus) {
  200. character->status = newStatus;
  201. }
  202. int getCharacterStatus (Character *character) {
  203. return character->status;
  204. }
  205. void setCharacterStatusDuration (Character *character, int newStatusDuration) {
  206. character->statusDuration = newStatusDuration;
  207. }
  208. int getCharacterStatusDuration (Character *character) {
  209. return character->statusDuration;
  210. }
  211. void initializeInventory (Character *character) {
  212. for (int i = 0; i < 10; i++)
  213. {
  214. character->inventory[i] = NULL;
  215. }
  216. }
  217. void putItemInInventory (Character *character, Item *item,int inventorySlot) {
  218. if(inventorySlot > 9) {
  219. printf("Inventory slot is out of range (0-9)\n");
  220. } else if (inventorySlot < 0) {
  221. printf("Inventory slot is out of range (0-9)\n");
  222. } else if (character->inventory[inventorySlot] == NULL) {
  223. printf("Inventory slot is already occupied\n");
  224. } else {
  225. character->inventory[inventorySlot] = item;
  226. }
  227. }
  228. Item * getItemInInventory (Character *character, int inventorySlot) {
  229. if(inventorySlot > 9) {
  230. printf("Inventory slot is out of range (0-9)\n");
  231. return NULL;
  232. } else if (inventorySlot < 0) {
  233. printf("Inventory slot is out of range (0-9)\n");
  234. return NULL;
  235. } else if (character->inventory[inventorySlot] == NULL) {
  236. printf("Inventory slot is empty\n");
  237. return NULL;
  238. } else {
  239. return character->inventory[inventorySlot];
  240. }
  241. }