亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cardgame.c

?? < OSEKVDX汽車電子嵌入式軟件編程技術(shù)>>配套光盤,搞汽車電子的趕快下:).
?? C
字號(hào):
/************************************************
*
*	$Copyright    2001 Joseph J. Lemieux  ALL RIGHTS RESERVED. $
*
*	$Filename: C:\OSEKBook\src\CH06\src\cardgame.c $
*
*	Description: Main routine to handle the processing
*                    of the card game.
*
************************************************/
#ifndef CARDGAMEC
#define CARDGAMEC

/************************************************
*
*	Include files
*
************************************************/

#include "typedefs.h"
#include "os.h"
#include "keypad.h"
#include "dispdrv.h"
#include "carddeck.h"
#include "cardgame.h"

DeclareTask(OutputDisplay);

/************************************************
*
*	Local macros
*
************************************************/

/************************************************
*
*	Local type definitions
*
************************************************/
/*
* Defines the types of transitions that occur for the state
* machine. The event is processed in the function
* ProcessKeyPress
*/
typedef struct GameTransitionTableTypetag {
   GameState state;
   char key;
   GameTransitions event;
   }GameTransitionTableType;
/************************************************
*
*	Local Function Prototypes
*
************************************************/
GameTransitions CheckGameTransition(char keyPressed);
void EndGame(void);

/************************************************
*
*	Local Variables
*
************************************************/
/* 
* Current state of the game. Default is GAME_NORMAL
*/
GameState gameState = GAME_NORMAL;
/*
* Player specific variables - total score, position in hand (1-5), 
* and actual cards in hand.
*/
UINT8 dealerScore,playerScore;
UINT8 dealerPosition, playerPosition;
UINT8 dealerCards[5], playerCards[5];

/************************************************
*
*	Local Constants
*
************************************************/
/*
* Message that is shown on the LCD when game begins
*/
char const GameMessage[] = "\fDealer:\n\nPlayer:";

/*
* Table of Transitions
*/
GameTransitionTableType const gameTransitionTable[] = {
   {GAME_NORMAL,'D',START_SHUFFLING},
   {GAME_NORMAL,'C',NEW_GAME},
   {GAME_PLAYER_TURN,'A',DEAL_PLAYER_CARD},
   {GAME_PLAYER_TURN,'B',END_PLAYER_TURN},
   {GAME_PLAYER_TURN,'D',START_SHUFFLING},
   {GAME_DEALER_TURN,'D',START_SHUFFLING},
   {0,0,NO_ACTION}
   };
/************************************************
*
*	Functions
*
************************************************/

/************************************************
*
*   Task:         ProcessKeyPress
*
*   Description:  Main dispatching task that processes
*                 all key presses as they occur.
*
************************************************/
TASK(ProcessKeyPress)
{
EventMaskType eventMask;
BOOLEAN shuffleComplete;
char keyValue;
UINT8 i;

   while(1){
      WaitEvent(KEYPRESS);
      ClearEvent(KEYPRESS);
      while((keyValue = GetKeyValue())!= 0){
         switch(CheckGameTransition(keyValue)){
            case START_SHUFFLING:
               SetRelAlarm(SampleShuffleSwitchAlarm,10,10);
               ActivateTask(DealCards);
               ActivateTask(ShuffleCards);
               gameState = GAME_SHUFFLING;
               shuffleComplete = FALSE;
               do{
                  WaitEvent(KEYPRESS|SHUFFLED);
                  GetEvent(ProcessKeyPress,(EventMaskRefType)&eventMask);
                  if((eventMask & KEYPRESS)!= 0){
                     ClearEvent(KEYPRESS);
                     while((keyValue = GetKeyValue()) != 0){
                        if(keyValue == '#'){
                           CancelAlarm(ShuffleAlarm);
                           CancelAlarm(SampleShuffleSwitchAlarm);
                           SetEvent(DealCards,ABORT_SHUFFLE);
                           shuffleComplete = TRUE;
                        }
         }
                  }
                  else{
                     ClearEvent(SHUFFLED);
                     shuffleComplete = TRUE;
                  }
               }while(shuffleComplete == FALSE);
         break;
            case DEAL_PLAYER_CARD:
               playerCards[playerPosition] = DealCard(PLAYER,playerPosition,TRUE);
               playerScore += GetCardValue(playerCards[playerPosition]);
               if(playerScore > 21){
                  for(i=0;i<=playerPosition;i++){
                     if(GetCardValue(playerCards[i])==11){
                        playerCards[i] = ACE_IS_ONE;
                        playerScore -= 10;
                        break;
                     }
                  }
               }
               if((++playerPosition == 5) || (playerScore > 21)){
                  SetDisplayPosition(0,9);
                  DisplayCard(dealerCards[0]);
                  ActivateTask(OutputDisplay);
                  EndGame();
               }
               break;
            case END_PLAYER_TURN:
               gameState = GAME_DEALER_TURN;
               ActivateTask(DealerTurn);
               break;
            case NEW_GAME:
               ActivateTask(DealCards);
               if(GetRemainingCards() < GAME_MINIMUM_CARDS){
            SetRelAlarm(SampleShuffleSwitchAlarm,10,10);
            ActivateTask(ShuffleCards);
                  gameState = GAME_SHUFFLING;
                  shuffleComplete = FALSE;
                  do{
                     WaitEvent(KEYPRESS|SHUFFLED);
                     GetEvent(ProcessKeyPress,(EventMaskRefType)&eventMask);
                     if((eventMask & KEYPRESS)!= 0){
                        ClearEvent(KEYPRESS);
                        while((keyValue = GetKeyValue()) != 0){
                           if(keyValue == '#'){
                              CancelAlarm(ShuffleAlarm);
                              CancelAlarm(SampleShuffleSwitchAlarm);
                              SetEvent(DealCards,ABORT_SHUFFLE);
                              shuffleComplete = TRUE;
         }
                        }
                     }
                     else{
                        ClearEvent(SHUFFLED);
                        shuffleComplete = TRUE;
                     }
                  }while(shuffleComplete == FALSE);
               }
               else{
                  SetEvent(DealCards,SHUFFLED);
               }
               break;
            case NO_ACTION:
         break;
   }
      }
   }
}

/************************************************
*
*   Task:         DealCards
*
*   Description:  Deals the first 4 cards when a
*                 new game starts.
*
************************************************/
TASK(DealCards)
{
EventMaskType eventMask;

   WaitEvent(ABORT_SHUFFLE|SHUFFLED);
   GetEvent(DealCards,(EventMaskRefType)&eventMask);
   if((eventMask & SHUFFLED)!=0){
      strcpy(displayBuffer,GameMessage);
      ActivateTask(OutputDisplay);
      playerCards[0] = DealCard(PLAYER,0,TRUE);
      dealerCards[0] = DealCard(DEALER,0,FALSE);
      playerCards[1] = DealCard(PLAYER,1,TRUE);
      dealerCards[1] = DealCard(DEALER,1,TRUE);
      dealerScore = GetCardValue(dealerCards[0])+GetCardValue(dealerCards[1]);
      playerScore = GetCardValue(playerCards[0])+GetCardValue(playerCards[1]);
      dealerPosition = playerPosition = 2;
      gameState = GAME_PLAYER_TURN;
      ClearEvent(SHUFFLED);
   }
   else{
      ClearEvent(ABORT_SHUFFLE);
   gameState = GAME_NORMAL;
   }
   TerminateTask();
}

/************************************************
*
*   Task:         DealerTurn
*
*   Description:  Deals the cards for the dealer.
*                 Dealer stays at 16 hits at 17.
*
************************************************/
TASK(DealerTurn)
{
UINT8 i;

   SetDisplayPosition(0,9);
   DisplayCard(dealerCards[0]);
   ActivateTask(OutputDisplay);
   SetDisplayPosition(1,9);
   if(dealerScore < 17){
      dealerCards[dealerPosition] = DealCard(DEALER,dealerPosition,TRUE);
      dealerScore += GetCardValue(dealerCards[dealerPosition]);
      if(dealerScore > 21){
         for(i=0;i<=dealerPosition;i++){
            if(GetCardValue(dealerCards[i])==11){
               dealerCards[i] = ACE_IS_ONE;
               dealerScore -= 10;
               break;
            }
         }
      }
      if((++dealerPosition == 5) || (dealerScore > 21)){
         EndGame();
      }
   }
   else{
      EndGame();
   }
   if(gameState == GAME_DEALER_TURN){
      SetRelAlarm(DealerTurnAlarm,2000,0);
   }
   TerminateTask();
}

/************************************************
*
*   Function:     CheckGameTransition
*
*   Inputs:       keyPressed - Key that was pressed
*
*   Outputs:      None
*
*   Returns:      Event that occurs based upon the entry in the table
*
*   Description:  Navigates through the table of possible 
*                 game transitions and returns the event
*                 that has occurred based upon the key that
*                 was pressed. If no event, the last entry in
*                 the table returns NO_ACTION.
*
************************************************/
GameTransitions CheckGameTransition(char keyPressed)
{
const GameTransitionTableType * transitions = gameTransitionTable;

	while(transitions->key != 0){
      if((transitions->state == gameState) && (transitions->key == keyPressed)){
         break;
      }
      transitions++;
   }
return transitions->event;
}

/************************************************
*
*   Function:     EndGame
*
*   Inputs:       None
*
*   Outputs:      Displays scores on LCD
*
*   Returns:      None
*
*   Description:  Calculates scores, displays on LCD.
*
************************************************/
void EndGame(void)
{
   SetDisplayPosition(0,18);
   sprintf(displayBuffer,"%d",dealerScore);
   ActivateTask(OutputDisplay);
   SetDisplayPosition(2,18);
   sprintf(displayBuffer,"%d",playerScore);
   ActivateTask(OutputDisplay);
   gameState = GAME_NORMAL;
}

#endif /* CARDGAMEC */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品女同一区二区| 风间由美一区二区av101| 亚洲国产精品综合小说图片区| 亚洲欧洲精品天堂一级 | 亚洲精品国产一区二区三区四区在线| 日本一区二区视频在线观看| 久久一区二区三区四区| 久久综合久久久久88| 精品国产成人在线影院| 久久精品夜夜夜夜久久| 国产亚洲制服色| 中文字幕制服丝袜一区二区三区| 国产精品伦理在线| 天天亚洲美女在线视频| 视频在线观看国产精品| 美女任你摸久久| 国产成人在线视频免费播放| av在线不卡免费看| 在线视频欧美区| 欧美顶级少妇做爰| 欧美mv和日韩mv的网站| 欧美激情一区二区三区全黄| 亚洲日本乱码在线观看| 亚洲h动漫在线| 久久精品国产网站| 成人av网址在线| 欧美日韩综合色| 欧美刺激午夜性久久久久久久| 国产视频一区在线播放| 亚洲欧美一区二区久久| 青青青爽久久午夜综合久久午夜| 国产综合一区二区| 一本到不卡精品视频在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 粉嫩av一区二区三区在线播放| 97久久精品人人做人人爽50路| 欧美日韩久久一区| 久久精品一区二区三区av| 国产精品网曝门| 调教+趴+乳夹+国产+精品| 国内精品免费在线观看| 色婷婷综合激情| 日韩精品一区二区三区视频在线观看 | 国产在线播放一区三区四| 不卡视频在线看| 91精品婷婷国产综合久久竹菊| 国产清纯白嫩初高生在线观看91 | 欧美日韩国产精品自在自线| 久久蜜桃香蕉精品一区二区三区| 亚洲日本护士毛茸茸| 久久精品国产精品亚洲红杏| 91视频.com| 欧美成人三级电影在线| 亚洲人吸女人奶水| 国产中文字幕一区| 欧美色精品天天在线观看视频| 亚洲精品在线一区二区| 亚洲国产精品影院| 成人黄色777网| 欧美v亚洲v综合ⅴ国产v| 亚洲精品视频在线观看网站| 国产精品自产自拍| 91 com成人网| 亚洲激情图片一区| 国产精品一区免费视频| 国产欧美在线观看一区| 亚洲韩国一区二区三区| 99久久综合精品| 久久久不卡网国产精品二区 | 99久久精品国产导航| 欧美va亚洲va国产综合| 亚洲超丰满肉感bbw| 96av麻豆蜜桃一区二区| 久久综合九色综合97_久久久| 亚洲国产va精品久久久不卡综合| 99精品黄色片免费大全| 国产欧美一区二区精品性色超碰| 天天影视网天天综合色在线播放| 99久久国产综合精品麻豆 | 美女视频一区二区三区| 欧美午夜电影在线播放| 最新日韩在线视频| 成人一区二区三区中文字幕| 精品国产91九色蝌蚪| 蜜桃视频一区二区三区在线观看| 在线观看欧美精品| 亚洲色图都市小说| 成人精品鲁一区一区二区| 久久久影视传媒| 国内精品久久久久影院薰衣草 | 国产欧美日韩不卡| 国产高清成人在线| 久久久精品日韩欧美| 狠狠色狠狠色综合系列| 精品国产一区二区三区忘忧草 | 不卡在线视频中文字幕| 久久精品人人爽人人爽| 精品一区二区综合| 久久亚洲二区三区| 国产乱码精品一品二品| 久久精品日产第一区二区三区高清版| 韩国av一区二区三区| 欧美成人精品福利| 国产麻豆精品在线| 国产亚洲精品久| 成人爽a毛片一区二区免费| 亚洲国产精品ⅴa在线观看| 成人国产一区二区三区精品| 亚洲国产电影在线观看| 99精品在线观看视频| 亚洲免费在线电影| 欧美唯美清纯偷拍| 视频一区二区中文字幕| 日韩亚洲欧美高清| 国产一区二区三区电影在线观看| 久久久五月婷婷| 成人黄色网址在线观看| 亚洲精品美国一| 欧美日韩国产电影| 免费人成在线不卡| 国产丝袜美腿一区二区三区| kk眼镜猥琐国模调教系列一区二区| 亚洲色图欧美激情| 欧美少妇性性性| 美女一区二区久久| 中文无字幕一区二区三区| av爱爱亚洲一区| 午夜影院久久久| 欧美成人性战久久| 欧美日韩免费高清一区色橹橹| 亚洲成人高清在线| 精品久久久久久久久久久久久久久 | 26uuu成人网一区二区三区| 国产成人免费视| 亚洲伊人伊色伊影伊综合网| 3d动漫精品啪啪一区二区竹菊| 精品一区二区三区香蕉蜜桃 | 日韩专区欧美专区| 久久精品一区四区| 欧美专区亚洲专区| 麻豆91在线看| 中文字幕综合网| 日韩一级高清毛片| av在线不卡网| 蜜臂av日日欢夜夜爽一区| 国产精品视频线看| 6080午夜不卡| 99r国产精品| 麻豆国产精品777777在线| 国产精品电影一区二区| 91精品婷婷国产综合久久性色| 东方aⅴ免费观看久久av| 首页亚洲欧美制服丝腿| 国产精品情趣视频| 日韩免费看网站| 色婷婷一区二区| 韩国三级在线一区| 午夜视频在线观看一区二区| 久久久久国产精品麻豆| 在线不卡a资源高清| 成人一区二区三区视频在线观看| 午夜日韩在线电影| 国产精品久久免费看| 日韩欧美的一区| 91久久精品一区二区三区| 国产美女视频91| 视频一区视频二区在线观看| 中文字幕日韩av资源站| 欧美变态tickle挠乳网站| 色呦呦网站一区| 国产成人在线视频网站| 日本美女一区二区三区| 亚洲另类在线制服丝袜| 欧美激情自拍偷拍| 精品裸体舞一区二区三区| 欧美日韩成人激情| 色偷偷久久一区二区三区| 国产不卡视频一区二区三区| 六月丁香婷婷色狠狠久久| 亚洲福利一二三区| 亚洲三级在线看| 国产午夜亚洲精品羞羞网站| 日韩一级成人av| 欧美福利视频一区| 在线这里只有精品| 91视频精品在这里| 95精品视频在线| 成人h动漫精品一区二| 国产精品亚洲人在线观看| 免费高清在线一区| 秋霞午夜av一区二区三区| 亚洲成人精品影院| 亚洲一区二区在线免费看| 亚洲人成网站精品片在线观看| 国产女人水真多18毛片18精品视频 | 久久精品一区二区| 久久久精品国产免大香伊| 久久久亚洲精品一区二区三区| 欧美精品一区二区三区高清aⅴ| 3d动漫精品啪啪一区二区竹菊 |