最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言實(shí)現(xiàn)乒乓球比賽

 更新時(shí)間:2020年05月27日 10:59:19   作者:wenmiao_  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)乒乓球比賽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)乒乓球比賽的具體代碼,供大家參考,具體內(nèi)容如下

1)、基本要求

用8個(gè)LED發(fā)光管(紅黃綠)的來(lái)回滾動(dòng)顯示來(lái)模擬打乒乓球時(shí)乒乓球在兩邊球臺(tái)上的來(lái)回運(yùn)動(dòng)。比賽雙方用按鈕/開(kāi)關(guān)(雙方各用1個(gè)按鈕/開(kāi)關(guān))的方法來(lái)模擬發(fā)球與接球,即發(fā)球方按動(dòng)其控制的按鈕/開(kāi)關(guān)/健,球從發(fā)球方一側(cè)向?qū)Ψ竭\(yùn)動(dòng)(LED發(fā)光管從發(fā)球方到對(duì)方逐個(gè)點(diǎn)亮,滾動(dòng)顯示),當(dāng)球運(yùn)動(dòng)至接球方時(shí),接球方立即按動(dòng)其控制的按鈕/開(kāi)關(guān)/鍵,“擊球”使球“彈回”發(fā)球方一側(cè),如此周而復(fù)始,直至在規(guī)定的擊球時(shí)間內(nèi)有一方未能完成擊球動(dòng)作,從而對(duì)方得一分,然后繼續(xù)比賽。比賽規(guī)則可參照一般的乒乓球比賽規(guī)則。

要求:

(1). 球以每0.5秒滾過(guò)1個(gè)LED的速度移動(dòng);

(2). 回球需在球到達(dá)后的0.5秒內(nèi)進(jìn)行(按下按鈕),否則按失球計(jì);

(3). 球未到達(dá)提前按下按鈕按失球處理,不起回球作用;

(4). 用擴(kuò)展的4個(gè)七段數(shù)碼(小鍵盤(pán)上)為雙方記分(每方2個(gè)八段碼, ,按10進(jìn)制計(jì)數(shù),初始值00:00,可自行設(shè)計(jì)顯示及規(guī)則)

2)、設(shè)計(jì)提示

球到達(dá)接球方后,立即讀接球方的按鈕狀態(tài),若未按則有效(若已按下則按失球計(jì)),然后不斷讀此按鈕狀態(tài),直到按下代表“擊球”動(dòng)作。(采用中斷,可以用同一個(gè)按鍵輪流按動(dòng)識(shí)別)。

3)、進(jìn)一步設(shè)計(jì)要求

(1). 在8×8點(diǎn)陣(虛擬大屏)同步顯示球移動(dòng)情況,設(shè)計(jì)顯示輸贏(yíng)球圖形狀態(tài)、效果等;移動(dòng)、擊球等精確(中斷)計(jì)時(shí);

(2). 通過(guò)撥動(dòng)開(kāi)關(guān)或鍵盤(pán)設(shè)定改變球移動(dòng)速度,即每個(gè)LED管點(diǎn)亮?xí)r間分別為0.5秒、0.3秒、0.2秒;通過(guò)撥動(dòng)開(kāi)關(guān)或鍵盤(pán)設(shè)定改變?cè)试S擊球時(shí)間0.3秒、0.2秒、0.1秒;球移動(dòng)速度取決于擊球時(shí)間,即球移動(dòng)速度(每個(gè)LED點(diǎn)亮?xí)r間)在0.2~0.5秒內(nèi)可變,具體取決于球到達(dá)接球方后擊球所花的時(shí)間0~0.5秒如花費(fèi)的時(shí)間短則回球后球移動(dòng)速度快反之回球后移動(dòng)

#include "interface.h"
void init8255(void); 
const unsigned short Port8255Base=0x288;
const unsigned char ControlWord8255=0x80;
Input/Output.PortA:Output
unsigned char gData=0x80;
int flag=0;
int num=0;
const unsigned char ControlWord8255B = 0x82;
const unsigned char ControlWord8255E = 0x88;
void init8255B(void); 
int scoreleft,scoreright;
int speedlamp;
int speed2;
int speed3;
 
void turnleft()
{
 gData=1;
 while(1)
 {
 PortWriteByte(Port8255Base,gData);
 if(gData==128)
 {
 flag=0;
 break;
 }
 gData*=2;
 sleep(speedlamp);
 }
}
void turnright()
{
 gData=128;
 while(1)
 {
 PortWriteByte(Port8255Base,gData);
 if(gData==1)
 {
 flag=1;
 break;
 }
 gData/=2;
 sleep(speedlamp);
 }
}
unsigned char led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
BYTE pdata;
BYTE reflect;
void main( )
{
 init8255B();
  //int speedlamp=500;
 BYTE controldudu;
 PortReadByte(Port8255Base + 2, &controldudu);
 printf("%d \n",controldudu);
 controldudu/=32;
 int k5=controldudu%2;
 controldudu/=2;
 int k6=controldudu%2;
 if(k6==0)
 speedlamp=500;
 else
 speedlamp=50;
 if(k5==0)
 speed2=500;
 else
 speed2=1;
 printf("%d %d\n",k6,k5);
 pdata/=16;
 scoreleft=0;
 scoreright=0;
 BYTE pdata=0; 
  int k0=0;
 int k7=0;
 int score0=0;
 int score1=0;
 
 BYTE old=0;
 BYTE now;
 int k0old,k0new,k7old,k7new;
 k0old=old%2;
 k7old=old/8;
 while(1)
 {
 printf("\n當(dāng)前分?jǐn)?shù):%d : %d\n",scoreleft,scoreright);
 
 int yyy=5;
 while(yyy--){
 PortWriteByte(Port8255Base+2,0x01); 
 PortWriteByte(Port8255Base+1,led[scoreright%10]);
 sleep(1); //delay 100ms
 PortWriteByte(Port8255Base+2,0x02); 
 PortWriteByte(Port8255Base+1,led[scoreright/10]); 
  sleep(1); 
 PortWriteByte(Port8255Base+2,0x04); 
 PortWriteByte(Port8255Base+1,led[scoreleft%10]);
 sleep(1); //delay 100ms
 PortWriteByte(Port8255Base+2,0x08); 
 PortWriteByte(Port8255Base+1,led[scoreleft/10]); 
  sleep(1); 
 PortWriteByte(Port8255Base+2,0);
 }
 PortReadByte(Port8255Base + 2, &pdata);
 pdata/=16;
 sleep(500);
 printf("--%d",pdata);
 printf("old:%d new:%d\n",old,pdata);
 if(old==pdata)
 {
 continue;
 }
 else
 {
 k7old=old/8;
 k0old=old%2;
 k0new=pdata%2;
 k7new=pdata/8;
 if(k7old!=k7new)
 {
  //printf("---here---\n");
 again:
  turnright();
  old=pdata;
  k0old=old%2;
  PortReadByte(Port8255Base + 2, &now);
  now/=16;
  k0old=now%2;
  if(speed2>50)
  {
  sleep(200);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
  pdata=reflect;
  speedlamp=200;
  goto r1;
  }
  else
  {
  sleep(100);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
  pdata=reflect;
  speedlamp=1000;
  goto r1;
  }
  else
  {
  sleep(100);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
   pdata=reflect;
   speedlamp=4000;
   goto r1;
  }
  else
  {
   sleep(100);
   goto r2;
  }
  }
  }
  }
  else
  sleep(speed2);
  r2:
  PortReadByte(Port8255Base + 2, &pdata);
  pdata/=16;
  r1:
  k0new=pdata%2;
  printf("speedlamp:%d\n",speedlamp);
  if(!(old!=pdata&&k0old!=k0new))
  {
  printf("\n--right lose--\n");
  scoreleft++;
  sleep(500);
  PortReadByte(Port8255Base + 2, &pdata);
  pdata/=16;
  old=pdata;
  k7old=old/8;
  k0old=old%2;
  k0new=pdata%2;
  k7new=pdata/8;
  }
  else
  {
  printf("\nback\n");
  turnleft();
  old=pdata;
  k7old=old/8;
  PortReadByte(Port8255Base + 2, &now);
  k7old=now/128;
  if(speed2>50)
  {
  sleep(200);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
  pdata=reflect;
  speedlamp=200;
  goto r3;
  }
  else
  {
  sleep(100);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
   pdata=reflect;
   speedlamp=1000;
   goto r3;
  }
  else
  {
   sleep(100);
   PortReadByte(Port8255Base + 2, &reflect);
   reflect/=16;
   if(!(reflect==pdata))
   {
   pdata=reflect;
   speedlamp=4000;
   goto r3;
   }
   else
   {
   sleep(100);
   goto r4;
   }
  }
  }
  }
  else
  sleep(speed2);
  r4:
  PortReadByte(Port8255Base + 2, &pdata);
  pdata/=16;
  r3:
  k7new=pdata/8;
  if(!(old!=pdata&&k7old!=k7new))
  {
  printf("\n--left lose--\n");
  scoreright++;
  }
  else
  {
  goto again;
  }
  }
 }
 else if(k0old!=k0new)
 {
 again2:
  turnleft();
  old=pdata;
  k7old=old/8;
  PortReadByte(Port8255Base + 2, &now);
  k7old=now/128;
  if(speed2>50)
  {
  sleep(200);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
  pdata=reflect;
  speedlamp=200;
  goto r7;
  }
  else
  {
  sleep(100);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
  pdata=reflect;
  speedlamp=1000;
  goto r7;
  }
  else
  {
  sleep(100);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
   pdata=reflect;
   speedlamp=2000;
   goto r7;
  }
  else
  {
   sleep(100);
   goto r8;
  }
  }
  }
  }
  sleep(speed2);
  r8:
  PortReadByte(Port8255Base + 2, &pdata);
  pdata/=16;
  r7:
  k7new=pdata/8;
  if(!(old!=pdata&&k7old!=k7new))
  {
  printf("\n--left lose--\n");
  scoreright++;
  sleep(500);
  PortReadByte(Port8255Base + 2, &pdata);
  pdata/=16;
  old=pdata;
  k7old=old/8;
  k0old=old%2;
  k0new=pdata%2;
  k7new=pdata/8;
  }
  else
  {
  printf("\nback\n");
  turnright();
  old=pdata;
  k7old=old/8;
  PortReadByte(Port8255Base + 2, &now);
  now/=16;
  k0old=now%2;
  if(speed2>50)
  {
  sleep(200);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
  pdata=reflect;
  speedlamp=200;
  goto r5;
  }
  else
  {
  sleep(100);
  PortReadByte(Port8255Base + 2, &reflect);
  reflect/=16;
  if(!(reflect==pdata))
  {
   pdata=reflect;
   speedlamp=100;
   goto r5;
  }
  else
  {
   sleep(100);
   PortReadByte(Port8255Base + 2, &reflect);
   reflect/=16;
   if(!(reflect==pdata))
   {
   pdata=reflect;
   speedlamp=2000;
   goto r5;
   }
   else
   {
   sleep(100);
   goto r6;
   }
  }
  }
  }
  sleep(speed2);
  r6:
  PortReadByte(Port8255Base + 2, &pdata);
  pdata/=16;
  r5:
  k7new=pdata/8;
  if(!(old!=pdata&&k0old!=k0new))
  {
  printf("\n--right lose--\n");
  scoreleft++;
  }
  else
  {
  goto again2;
  }
  }
 }
 }
 
 }
 Cleanup();
}
 
void init8255(void)
{
 if (!Startup()) 
 {
 printf("\n\n  ERROR: Open Device Error!請(qǐng)打開(kāi)實(shí)驗(yàn)箱電源\n");
 _getch();
 exit(0);
 }
  PortWriteByte(Port8255Base + 3, ControlWord8255); 
}
 
void init8255B(void)
{
 if (!Startup())
 {
 printf("\n\n  ERROR: Open Device Error!請(qǐng)打開(kāi)實(shí)驗(yàn)箱電源\n");
 _getch();
 exit(0); // return to Windows
 }
 PortWriteByte(Port8255Base + 3, ControlWord8255E); 
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 從匯編看c++中extern關(guān)鍵字的使用

    從匯編看c++中extern關(guān)鍵字的使用

    本篇文章介紹了,在c++中extern關(guān)鍵字的使用概述,需要的朋友參考下
    2013-05-05
  • C++指針運(yùn)算符(&和*)的實(shí)現(xiàn)

    C++指針運(yùn)算符(&和*)的實(shí)現(xiàn)

    C++ 提供了兩種指針運(yùn)算符,一種是取地址運(yùn)算符 &,一種是間接尋址運(yùn)算符 *,本文就詳細(xì)的介紹一下這兩種運(yùn)算符的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • C++隨機(jī)生成迷宮算法

    C++隨機(jī)生成迷宮算法

    這篇文章主要為大家詳細(xì)介紹了C++隨機(jī)生成迷宮算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C#中?MessageBox的使用技巧

    C#中?MessageBox的使用技巧

    這篇文章主要介紹了C#中?MessageBox的使用技巧,在C#中MessageBox消息對(duì)話(huà)框位于System.Windows.Forms命名空間中,更多詳細(xì)的內(nèi)容需要的朋友可以參考一下
    2022-08-08
  • C++中的struct和class的區(qū)別詳解

    C++中的struct和class的區(qū)別詳解

    這篇文章主要介紹了C++中的struct和class的區(qū)別詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • C語(yǔ)言 以字符串的形式讀寫(xiě)文件詳解及示例代碼

    C語(yǔ)言 以字符串的形式讀寫(xiě)文件詳解及示例代碼

    本文主要介紹 C語(yǔ)言以字符串的形式讀寫(xiě)文件,這里提供了詳細(xì)的資料及簡(jiǎn)單示例代碼以便大家學(xué)習(xí)參考,有學(xué)習(xí)此部分的小伙伴可以參考下
    2016-08-08
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易三子棋游戲

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C語(yǔ)言+win32api寫(xiě)窗體應(yīng)用程序

    C語(yǔ)言+win32api寫(xiě)窗體應(yīng)用程序

    本文給大家分享的是個(gè)人使用純C語(yǔ)言結(jié)合win32api制作窗體應(yīng)用程序的代碼,非常的簡(jiǎn)單,給需要的小伙伴參考下。
    2016-02-02
  • C語(yǔ)言中關(guān)于scanf函數(shù)的一些問(wèn)題詳解

    C語(yǔ)言中關(guān)于scanf函數(shù)的一些問(wèn)題詳解

    這篇文章主要為大家介紹了C語(yǔ)言中關(guān)于scanf函數(shù)的一些問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • 詳解C語(yǔ)言中的memset()函數(shù)

    詳解C語(yǔ)言中的memset()函數(shù)

    這篇文章主要介紹了C語(yǔ)言中的memset()函數(shù),包括其與memcpy()函數(shù)的區(qū)別,需要的朋友可以參考下
    2015-08-08

最新評(píng)論

涿鹿县| 祥云县| 玉环县| 临沧市| 大田县| 盱眙县| 新干县| 宁德市| 云梦县| 漳州市| 慈溪市| 万载县| 龙南县| 资溪县| 铁岭县| 兴海县| 温泉县| 个旧市| 巴塘县| 长葛市| 涿鹿县| 安龙县| 神农架林区| 河源市| 平度市| 疏附县| 彭州市| 德庆县| 淮滨县| 黎城县| 南涧| 开平市| 阳城县| 南充市| 寿宁县| 织金县| 紫金县| 红桥区| 丹江口市| 宁蒗| 瑞金市|