// intensity.c
// Assignment 2, COMP1511 18s1: Intensity
//
// This program by QINQIN ZHU (z5211029)
//
#include
#include
// SOME USEFUL #defines - YOU WILL NEED MORE
#define ACTION_PLAYER_NAME 0
#define ACTION_DISCARD 1
#define ACTION_PLAY_CARD 2
#define ACTION_UNIT_TESTS 3
#define N_CARDS 40
#define N_CARDS_INITIAL_HAND 10
#define N_PLAYERS 4
#define N_CARDS_DISCARDED 3
#define CARD_MIN 10
#define CARD_MAX 49
// ADD EXTRA #defines HERE
void print_player_name(void);
void choose_discards(void);
void choose_card_to_play(void);
void run_unit_tests(void);
// ADD PROTOTYPES FOR YOUR FUNCTIONS HERE
// You should need to change this main function
int main(void) {
int which_action = 0;
scanf("%d", which_action);
if (which_action == ACTION_PLAYER_NAME) {
print_player_name();
} else if (which_action == ACTION_DISCARD) {
choose_discards();
} else if (which_action == ACTION_PLAY_CARD) {
choose_card_to_play();
} else {
run_unit_tests();
}
return 0;
}
void print_player_name(void) {
// CHANGE THIS PRINTF TO YOUR DESIRED PLAYER NAME
printf("Lucky\n");
}
void choose_discards() {
int initial[N_CARDS_INITIAL_HAND]={0};
// ADD CODE TO READ THE CARDS OF YOUR HAND INTO AN ARRAY USING SCANF
for(int a=0;a 19){
begin2_cd[b]=cards[a];
b++;
begin2++;
}
}
int begin3_cd[CARD_MIN]={0};
int c=0;
for(int a=0;a 29){
begin3_cd[c]=cards[a];
c++;
begin3++;
}
}
int begin4_cd[CARD_MIN]={0};
int d=0;
for(int a=0;a 39){
begin4_cd[d]=cards[a];
d++;
begin4++;
}
}
//Whether I have card of 47.
int num47=0;
for(int a=0;a19){
num2++;
}else if(cards_pre[a] % 50 29){
num3++;
}else if(cards_pre[a] % 50 39){
num4++;
}
}
//If I was the first player to play in round 0.
if(round == 0 cdplayed == 0){
//If I do not have a card of 47.
if(begin4 > 0 num47 == 0){
for(int a=begin4-1;a>=0;a--){
if(begin4_cd[a] % 50 == 46){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 50 == 45){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 50 == 44){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 50 == 43){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 50 == 42){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 50 == 41){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 50 == 40){
c=begin4_cd[a];break;
}
}//If I have card of 47.
} else if(begin4 >0 num47 == 1){
for(int a=begin4-1;a>=0;a--){
if(begin4_cd[a] % 50 == 49){
c=begin4_cd[begin4];break;
} else if(begin4_cd[a] % 50 == 48){
c=begin4_cd[a];break;
} else if(begin2_cd[a] % 50 ==29){
c=begin2_cd[a];break;
} else if(begin2_cd[a] % 50 ==28){
c=begin2_cd[a]; break;
} else if(begin1_cd[a] % 50 ==19){
c=begin1_cd[a]; break;
} else if(begin1_cd[a] % 50 ==18){
c=begin1_cd[a]; break;
}
}
}else if(begin1>0){
c=begin1_cd[begin1-1];
}else if(begin2>0){
c=begin2_cd[begin2-1];
}
}
//If I was the first player to play in round 1.
int remain1=0,remain2=0,remain4=0;
int j=0;
remain1=begin1_cd[0] % 10;
remain2=begin2_cd[0] % 20;
remain4=begin4_cd[0] % 40;
if(round == 1 cdplayed==0){
if(cards_pre[0] % 50 39){
if(begin1_cd[e] % 10 > begin2_cd[b] % 20){
c=begin1_cd[begin1];
} else {
c=begin2_cd[begin2];
}
if(cards_pre[0] % 50 19){
c=begin1_cd[begin1];
} else if(cards_pre[0] % 50 remain2){
if(remain2>remain4){
c=begin4_cd[0];
}else {
c=begin2_cd[0];
}
}else if(remain1remain2){
c=begin2_cd[0];
}else if(remain1remain4){
c=begin4_cd[0];
}else if(remain1remain4){
c=begin4_cd[0];
}else if(remain20){
if(cards_pla[0] % 50 0){ //If I have cards between 10-19.
c=begin1_cd[0];
} else if(begin1 > 1){
int smaller=0;
for(int a=0;a=1){
int max=0, mymax=0;
if (cdplayed==3){
int a=0;
if(cards_pla[a]>cards_pla[a+1] cards_pla[a]>cards_pla[a+2]){
max=cards_pre[a];
}else if(cards_pla[a]>cards_pre[a+1] cards_pla[a]cards_pla[a+2]){
max=cards_pla[a+1];
}else if(cards_pla[a]cards_pla[a+1]){
max=cards_pla[a];
}else{
max=cards_pla[a+1];
}
}else if(cdplayed==1){
max=cards_pla[0];
}
for(int a=0;a0){ //If I don't have card of 47.
for(int a=begin4-1;a>=0;a--){
if(begin4_cd[a] % 10 == 9){
c=begin4_cd[a];break;
}if(begin4_cd[a] % 10 == 8){
c=begin4_cd[a];break;
}
//If I have cards between 30-39
} if(begin3 > 0){
c=begin3_cd[begin3-1];
}else if(begin2>0){
for(int a=begin2-1;a>=0;a--){
if(begin2_cd[a] % 10 == 9){
c=begin3_cd[a];break;
}if(begin2_cd[a] % 10 == 8){
c=begin2_cd[a];break;
}if(begin2_cd[a] % 10 == 7){
c=begin2_cd[a];break;
}if(begin2_cd[a] % 10 == 6){
c=begin2_cd[a];break;
}
}
}else if(begin4>0){
c=begin4_cd[begin4-1];
}else {
c=begin2_cd[begin2-1];
}
}
}
}//The first player play card between 20-29.
else if(cards_pla[0] % 50 19 ){
if(begin2 0){ //If I have cards between 20-29.
c=begin2_cd[0];
} else if(begin2 > 1){
int smaller=0;
for(int a=0;a=1){//If I have smaller cards than others.
int max=0,mymax=0;
if (cdplayed==3){
int a=0;
if(cards_pla[a]>cards_pla[a+1] cards_pla[a]>cards_pla[a+2]){
max=cards_pla[a];
}else if(cards_pla[a]>cards_pla[a+1] cards_pla[a]cards_pla[a+2]){
max=cards_pla[a+1];
}else if(cards_pla[a]cards_pla[a+1]){
max=cards_pla[a];
}else {
max=cards_pla[a+1];
}
}else if(cdplayed==1){
max=cards_pla[0];
}
for(int a=0;a0){ //If I don't have card of 47.
for(int a=begin4-1;a>=0;a--){
if(begin4_cd[a] % 10 == 9){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 8){
c=begin4_cd[a];break;
}
}//If I have cards between 30-39
if(begin3 > 0){
c=begin3_cd[begin3-1];
}else if(begin1>0){
for(int a=begin1-1;a>=0;a--){
if(begin1_cd[a] % 10 == 9){
c=begin3_cd[a];break;
} else if(begin1_cd[a] % 10 == 8){
c=begin1_cd[a];break;
} else if(begin1_cd[a] % 10 == 7){
c=begin1_cd[a];break;
} else if(begin1_cd[a] % 10 == 6){
c=begin1_cd[a];break;
}
}
}else if(begin4>0){
c=begin4_cd[begin4-1];
}else {
c=begin1_cd[begin1-1];
}
}
}//The first player play card between 30-39
}else if(cards_pla[0] % 50 29 ){
if(begin3 0){ //If I have cards between 30-39.
c=begin3_cd[0];
} else if(begin3 > 1){
int smaller=0;
for(int a=0;a=1){
int max=0;int mymax=0;
if (cdplayed==3){
int a=0;
if(cards_pre[a]>cards_pla[a+1] cards_pla[a]>cards_pla[a+2]){
max=cards_pla[a];
}else if(cards_pla[a]>cards_pla[a+1] cards_pla[a]cards_pla[a+2]){
max=cards_pla[a+1];
}else if(cards_pla[a]cards_pla[a+1]){
max=cards_pla[a];
}else{
max=cards_pla[a+1];
}
}else if(cdplayed==1){
max=cards_pla[0];
}
for(int a=0;a=0;a--){
if(begin4_cd[a] % 10 == 7){
c=begin4_cd[a];
}
}
}else if(num47 == 0 begin4>0){ //If I don't have card of 47.
for(int a=begin4-1;a>=0;a--){
if(begin4_cd[a] % 10 == 9){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 8){
c=begin4_cd[a];break;
}
} if(begin1>0){
for(int a=begin1-1;a>=0;a--){
if(begin1_cd[a] % 10 == 9){
c=begin1_cd[a];break;
} else if(begin1_cd[a] % 10 == 8){
c=begin1_cd[a];break;
} else if(begin1_cd[a] % 10 == 7){
c=begin1_cd[a];break;
} else if(begin1_cd[a] % 10 == 6){
c=begin1_cd[a];break;
}
}
}else if(begin2>0){
for(int a=begin2-1;a>=0;a--){
if(begin2_cd[a] % 10 == 9){
c=begin2_cd[a];break;
} else if(begin2_cd[a] % 10 == 8){
c=begin2_cd[a];break;
} else if(begin2_cd[a] % 10 == 7){
c=begin2_cd[a];break;
} else if(begin2_cd[a] % 10 == 6){
c=begin2_cd[a];break;
}
}
}else if(begin4>1){
c=begin4_cd[begin4-1];
}else if(begin2>1){
c=begin2_cd[begin2-1];
}else {
c=begin1_cd[begin1-1];
}
}
} //The first player play card between 40-49.
}else if(cards_pla[0] % 50 39 ){
if(begin4 0){ //If I have cards between 40-49.
c=begin4_cd[0];
} else if(begin4 > 1){
if(num47 == 1){//If I have card of 47.
for(int a=begin4-1;a>=0;a--){
if(begin4_cd[a] % 10 == 9){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 8){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 6){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 5){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 4){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 3){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 2){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 1){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 0){
c=begin4_cd[a];break;
}
}
} else if(num47 == 0 ){//If I don't have card of 47.
for(int a=begin4-1;a>=0;a--){
if(begin4_cd[a] % 10 == 6){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 5){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 4){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 3){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 2){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 1){
c=begin4_cd[a];break;
} else if(begin4_cd[a] % 10 == 0){
c=begin4_cd[a];break;
}
}
}
}else if(begin4==0){ //If I do not have cards between 40-49.
if(begin3 > 0){ //If I have cards between 30-39
c=begin3_cd[begin3-1];
}else if(begin1>0){
for(int a=begin1-1;a>=0;a--){
if(begin1_cd[a] % 10 == 9){
c=begin3_cd[a];break;
} else if(begin1_cd[a] % 10 == 8){
c=begin1_cd[a];break;
} else if(begin1_cd[a] % 10 == 7){
c=begin1_cd[a];break;
} else if(begin1_cd[a] % 10 == 6){
c=begin1_cd[a];break;
}
}
}else if(begin2>0){
for(int a=begin2-1;a>=0;a--){
if(begin2_cd[a] % 10 == 9){
c=begin3_cd[a];
} else if(begin2_cd[a] % 10 == 8){
c=begin2_cd[a];break;
} else if(begin2_cd[a] % 10 == 7){
c=begin2_cd[a];break;
} else if(begin2_cd[a] % 10 == 6){
c=begin2_cd[a];break;
}
}
}else if(begin1>0){
c=begin2_cd[begin2-1];
}else {
c=begin1_cd[begin1-1];
}
}
}
} printf("%d",c);
}
// ADD A COMMENT HERE EXPLAINING YOUR OVERALL TESTING STRATEGY
void run_unit_tests(void) {
//PUT YOUR UNIT TESTS HERE
}
// ADD YOUR FUNCTIONS HERE