小明交換牌
//小明和牌:名字 人:左手和右手 牌:花色和數字
// 交換:動詞 動作:把左手牌給右手,把右手的牌給左手
交換前:左手有一張牌、右手有一張牌(抓牌)
C語言中可以把名詞封裝成結構體、動詞封裝成函數
代碼:
#include <stdio.h>
//創建一個牌的結構體
typedef struct Poker{
//花色和數字
int color; //花色
int number; //牌的數字
}Poker;
//創建一個手的結構體
typedef struct Hands{
//手裏有牌
Poker poker;
}Hands;
//創建一個人的類型
typedef struct Person{
//擁有左手和右手
Hands leftHand; //人的左手
Hands rightHand; //人的右手
}Person;
//左手拿牌
//Poker leftHandTakePoker(Poker poker){
//
// return poker;
//}
//交換牌
void changePoker(Poker* poker1 , Poker* poker2){
//交換牌
Poker temp = *poker1;
*poker1 = *poker2;
*poker2 = temp;
}
//牌花色的枚舉
enum PokerColor{
HEI_TAO,
HONG_TAO,
MEO_HUA,
FANG_KUAI
};
//牌數字的枚舉
enum PokerNumber{
A = 1,
J = 11,
Q,
K
};
//牌的所有花色
char* colors[4] = {"♠︎","♡","♣︎","♢"};
//牌的所有數字
char* numbers[] = {"","A","2","3","4","5","6","7","8","9","10","J","Q","K"};
void showPoker(Poker poker1, Poker poker2){
printf("左手:%s%s 右手:%s%s\n",colors[poker1.color],numbers[poker1.number], colors[poker2.color],numbers[poker2.number]);
}
int main(int argc, const char * argv[]) {
//創建兩張牌分別是紅桃K和黑桃A
Poker poker1 = {HONG_TAO,K}; //創建了紅桃K
Poker poker2 = {HEI_TAO,A};
//創建兩隻手
Hands leftHand;
Hands rightHand;
//創建小明
Person xiaoming;
//小明有兩隻手
xiaoming.leftHand = leftHand;
xiaoming.rightHand = rightHand;
//用小明的手去抓牌
xiaoming.leftHand.poker = poker1;
xiaoming.rightHand.poker = poker2;
printf("======交換前=====\n");
showPoker(xiaoming.leftHand.poker, xiaoming.rightHand.poker);
//交換小明兩隻手裏的牌
changePoker(&xiaoming.leftHand.poker, &xiaoming.rightHand.poker);
printf("======交換後======\n");
showPoker(xiaoming.leftHand.poker, xiaoming.rightHand.poker);
return 0;
}