Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. const char ranks[] = {'2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A'};
  7. const char suits[] = {'H', 'D', 'S', 'C'};
  8.  
  9. //Function that gets the index of input character rank.
  10. int getRankIndex(char c){
  11. int arrlength = (sizeof(ranks) / sizeof(ranks[0]));
  12. for(int i = 0;i<arrlength;i++ ){
  13. if(c==ranks[i]){
  14. return i;
  15. }
  16.  
  17. }
  18. }
  19. /*
  20. Function that checks if a character is a valid rank or not
  21. */
  22. //function that compares the 4 cards and returns 1 if player 1 wins, 2 if player 2 etc.
  23. int compareCards(char rank1, char rank2, char suit1, char suit2, char rank3, char suit3, char rank4, char suit4, char trumpsuit){
  24. if( (suit1==trumpsuit) && (suit2!= trumpsuit) && (suit3!= trumpsuit) && (suit4!= trumpsuit) )
  25. {
  26. return 1;
  27. //suit1 won
  28. } else if( (suit1!=trumpsuit) && (suit2== trumpsuit) && (suit3!= trumpsuit) && (suit4!= trumpsuit) )
  29. {
  30. return 2;
  31. //suit2 won
  32. } else if( (suit1!=trumpsuit) && (suit2!= trumpsuit) && (suit3== trumpsuit) && (suit4!= trumpsuit) )
  33. {
  34. return 3;
  35. //suit3 won
  36. } else if( (suit1!=trumpsuit) && (suit2!= trumpsuit) && (suit3!= trumpsuit) && (suit4== trumpsuit) ){
  37. return 4;
  38. //suit4 won
  39. //the else nested inside makes it so if suit1==suit2 and rank1==rank2 1 wins because of suit led logic as specified in question 8
  40. }else if((suit1==suit2) && (suit2==suit3)){
  41. if(getRankIndex(rank2)>getRankIndex(rank1)){
  42. if(getRankIndex(rank3)>getRankIndex(rank2)){
  43. return 3;
  44. }
  45. else if(getRankIndex(rank2)>getRankIndex(rank3)){
  46. return 2;
  47. }
  48. }
  49. else if(getRankIndex(rank3)>getRankIndex(rank1)){
  50. return 3;
  51. }
  52. else if(getRankIndex(rank3)<getRankIndex(rank1)){
  53. return 1;
  54. }
  55.  
  56. }
  57.  
  58. else if((suit1==suit2) && (suit2==suit3) && (suit3==suit4)){
  59. if(getRankIndex(rank2)>getRankIndex(rank1)){
  60. if((getRankIndex(rank3)>getRankIndex(rank2)) && (getRankIndex(rank3)>getRankIndex(rank4))){
  61. return 3;
  62. }
  63. else if((getRankIndex(rank2)>getRankIndex(rank3)) && (getRankIndex(rank2)>getRankIndex(rank4))){
  64. return 2;
  65. }
  66. }
  67. else if(getRankIndex(rank3)>getRankIndex(rank1)){
  68. return 3;
  69. }
  70. else if(getRankIndex(rank3)<getRankIndex(rank1)){
  71. return 1;
  72. }
  73.  
  74. }
  75.  
  76.  
  77.  
  78. else if( suit1==suit2 )
  79. {
  80. if(getRankIndex(rank2)>getRankIndex(rank1)){
  81. return 2;
  82. }
  83. else {
  84. return 1;
  85. }
  86.  
  87. } else if( suit1==suit3 ){
  88. if(getRankIndex(rank1)<getRankIndex(rank3)){
  89. return 3;
  90. }
  91. else {
  92. return 1;
  93. }
  94.  
  95. } else if( suit1==suit4 ){
  96. if(getRankIndex(rank1)>getRankIndex(rank4)){
  97. return 4;
  98. }
  99. else {
  100. return 1;
  101. }
  102.  
  103. } else if( suit2==suit3 ){
  104. if(getRankIndex(rank2)>getRankIndex(rank3)){
  105. return 2;
  106. }
  107. else {
  108. return 3;
  109. }
  110.  
  111. } else if( suit2==suit4 ){
  112. if(getRankIndex(rank2)>getRankIndex(rank4)){
  113. return 2;
  114. }
  115. else{
  116. return 4;
  117. }
  118.  
  119. } else if( suit3==suit4 ){
  120. if(getRankIndex(rank3)>getRankIndex(rank4)){
  121. return 3;
  122. }
  123. else{
  124. return 4;
  125. }
  126. }
  127. } // end of function compareCards
  128.  
  129.  
  130. //Function to check if a character is a valid rank.
  131. char isValidRank(char c){
  132. char result='0';
  133. int lengthofranks = sizeof(ranks) / sizeof(ranks[0]);
  134. int i = 0;
  135. int found = 0;
  136. while (i<lengthofranks & !found)
  137. {
  138. if(c==ranks[i]){
  139. result = '1';
  140. found = 1;
  141. }
  142. i++;
  143. }
  144.  
  145. //returns '1' if char c is in ranks[], '0' if it isnt.
  146. return result;
  147. }
  148.  
  149. /*
  150. Function that checks if a character is a valid suit or not
  151. */
  152. char isValidSuit(char c){
  153. char result='0';
  154. int lengthofsuits = sizeof(suits) / sizeof(suits[0]);
  155. int i = 0;
  156. int found = 0;
  157. while (i<lengthofsuits & !found)
  158. {
  159. if(c==suits[i]){
  160. result = '1';
  161. found = 1;
  162. }
  163. i++;
  164. }
  165. //returns 1 if 'c' is in suit[], 0 if it isnt.
  166. return result;
  167. }
  168.  
  169. /*
  170. Returns char if valid suit is entered
  171. */
  172. char getTrump(){
  173. int errormsg = 0;
  174. int flagforisvalidsuit;
  175. char trumpsuit[10];
  176. char trump_suit;
  177. char flag1;
  178. do{
  179. if(errormsg){
  180. printf("Try again please.. you entered a invalid suit\n");
  181. }
  182. printf("What is the trump suit?\n");
  183. scanf(" %s", trumpsuit);
  184. trump_suit = trumpsuit[0];
  185. flag1 = isValidSuit(trump_suit);
  186. if(flag1=='0' || (strlen(trumpsuit) != 1)){
  187. flagforisvalidsuit = 1;
  188. errormsg = 1;
  189. } else if((flag1 == '1') && (strlen(trumpsuit) == 1)){
  190. flagforisvalidsuit = 0;
  191. printf("Successfully added %c as trump suit.\n",trumpsuit[0]);
  192. return trump_suit;
  193. }
  194. } while(flagforisvalidsuit);
  195. // never gets out of while loop, just used this for debugging.
  196. printf("out of while loop");
  197. } // end of function getTrump
  198.  
  199.  
  200. int main()
  201. {
  202. char trump_suit = getTrump();
  203. char player1_card[2];
  204. char player2_card[2];
  205. char player3_card[2];
  206. char player4_card[2];
  207. char player1_rank;
  208. char player1_suit;
  209. char player2_rank;
  210. char player2_suit;
  211. char player3_rank;
  212. char player3_suit;
  213. char player4_rank;
  214. char player4_suit;
  215. char flagforrank;
  216. char flagforsuit;
  217. int question1flag = 1;
  218. int question2flag = 0;
  219. int question3flag = 0;
  220. int question4flag = 0;
  221. int flagloop = 1;
  222. while(flagloop){
  223. if(question1flag){
  224. printf("Enter player 1's card(Rank followed by suit): \n");
  225. scanf(" %s",player1_card);
  226. flagforrank = isValidRank(player1_card[0]);
  227. flagforsuit = isValidSuit(player1_card[1]);
  228. if(player1_card[0] == '.'){
  229. exit(0);
  230. }
  231.  
  232. if((flagforrank=='0') || (flagforsuit=='0') || (strlen(player1_card)!=2)){
  233. printf("Invalid Card Please Re Enter.");
  234. } else{
  235. player1_rank = player1_card[0];
  236. player1_suit = player1_card[1];
  237. question1flag = 0;
  238. question2flag = 1;
  239. }
  240. }
  241.  
  242. if(question2flag){
  243. printf("Enter player 2's card(Rank followed by suit): \n");
  244. scanf(" %s",player2_card);
  245. flagforrank = isValidRank(player2_card[0]);
  246. flagforsuit = isValidSuit(player2_card[1]);
  247. if(player2_card[0] == '.'){
  248. exit(0);
  249. }
  250. if((flagforrank=='0') || (flagforsuit=='0') || (strlen(player2_card)!=2)){
  251. printf("Invalid Card Please Re Enter.");
  252. } else{
  253. player2_rank = player2_card[0];
  254. player2_suit = player2_card[1];
  255. question2flag = 0;
  256. question3flag = 1;
  257. }
  258. }
  259.  
  260. if(question3flag){
  261. printf("Enter player 3's card(Rank followed by suit): \n");
  262. scanf(" %s",player3_card);
  263. flagforrank = isValidRank(player3_card[0]);
  264. flagforsuit = isValidSuit(player3_card[1]);
  265. if(player3_card[0] == '.'){
  266. exit(0);
  267. }
  268.  
  269. if((flagforrank=='0') || (flagforsuit=='0') || (strlen(player3_card)!=2)){
  270. printf("Invalid Card Please Re Enter.");
  271. } else{
  272. player3_rank = player3_card[0];
  273. player3_suit = player3_card[1];
  274. question3flag = 0;
  275. question4flag = 1;
  276. }
  277. }
  278.  
  279. if(question4flag){
  280. printf("Enter player 4's card(Rank followed by suit): \n");
  281. scanf(" %s",player4_card);
  282. flagforrank = isValidRank(player4_card[0]);
  283. flagforsuit = isValidSuit(player4_card[1]);
  284. if(player4_card[0] == '.'){
  285. exit(0);
  286. }
  287. if((flagforrank=='0') || (flagforsuit=='0') || (strlen(player4_card)!=2)){
  288. printf("Invalid Card Please Re Enter.");
  289. } else{
  290. player4_rank = player4_card[0];
  291. player4_suit = player4_card[1];
  292. question4flag = 0;
  293. flagloop = 0;
  294. }
  295. }
  296. } // end while loop
  297.  
  298. printf("%c%c, ",player1_card[0],player1_card[1]);
  299. printf("%c%c, ",player2_card[0],player2_card[1]);
  300. printf("%c%c, ",player3_card[0],player3_card[1]);
  301. printf("%c%c, \n",player4_card[0],player4_card[1]);
  302.  
  303. int player_win = compareCards(player1_rank,player2_rank,player1_suit,player2_suit,player3_rank,player3_suit,player4_rank,player4_suit,trump_suit);
  304.  
  305. if(player_win==1){
  306. printf("Winning cards : %c%c",player1_card[0],player1_card[1]);
  307. }
  308. else if(player_win==2){
  309. printf("Winning cards : %c%c",player2_card[0],player2_card[1]);
  310. }
  311. else if(player_win==3){
  312. printf("Winning cards : %c%c",player3_card[0],player3_card[1]);
  313. }
  314. else if(player_win==4){
  315. printf("Winning cards : %c%c",player4_card[0],player4_card[1]);
  316. }
  317. return 0;
  318. } // end of fund player_win
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement