欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊小游戲

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊小游戲的制作代碼,具體內(nèi)容如下

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
 
 
#define TTY_PATH "/dev/tty" 
#define STTY_ON "stty raw -echo -F" 
#define STTY_OFF "stty -raw echo -F" 
 
int map[21][14]; 
char direct; 
 
int node[7][4][16]={ 
  {{0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0},//長(zhǎng)方形 
   {0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0}, 
   {0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0}, 
   {0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0}}, 
  {{1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},//正方形 
   {1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0}, 
   {1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0}, 
   {1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0}}, 
  {{0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0},//3邊加一中點(diǎn) 
   {0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0}, 
   {0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0}, 
   {0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0}}, 
  {{0,1,1,0,0,1,0,0,0,1,0,0,0,0,0,0},//右鋤頭型 
   {0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0}, 
   {0,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0}, 
   {1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0}}, 
  {{1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0},//左鋤頭型 
   {0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0}, 
   {0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0}, 
   {0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,0}}, 
  {{0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0},//右曲折型 
   {0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0}, 
   {0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0}, 
   {0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0}}, 
  {{0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0},//左曲折型 
   {1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0}, 
   {0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0}, 
   {1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0}} 
  }; 
 
typedef struct block 
{ 
 int x; 
 int y; 
 int blockType; 
 int blockDirect;  
}Block; 
Block bl; 
 
void init_map()//初始化邊框 
{ 
 int i,j; 
 for(i=0; i<21; i++) 
  for(j=0; j<14; j++) 
  { 
   if(j==0 || j==13) 
    map[i][j] = 200; 
   else if(i==20) 
    map[i][j] = 201; 
   else  
    map[i][j] = 0; 
  } 
} 
void new_block()//生成隨機(jī)的俄羅斯方塊 
{ 
 int blockType = rand()%7; 
 int blockDirect = rand()%4; 
 int x = 1; 
 int y = 5; 
 bl.x = x; 
 bl.y = y; 
 bl.blockType = blockType; 
 bl.blockDirect = blockDirect; 
} 
 
void input()//將移動(dòng)后的俄羅斯方塊,導(dǎo)入地圖中作標(biāo)記 
{ 
 int i, j; 
 for(i=0; i<4; i++) 
  for(j=0; j<4; j++) 
   if(node[bl.blockType][bl.blockDirect][i*4+j]==1) 
   { 
    map[bl.x+i][bl.y+j] = 1; 
   } 
} 
void output()//移動(dòng)時(shí),將之前俄羅斯方塊在地圖信息清空。 
{ 
 int i, j; 
 for(i=0; i<4; i++) 
  for(j=0; j<4; j++) 
   if(node[bl.blockType][bl.blockDirect][i*4+j]==1) 
   { 
    map[bl.x+i][bl.y+j] = 0; 
   } 
} 
 
void change()//俄羅斯方格在碰撞后融入,固定 
{ 
 int i, j; 
 for(i=0; i<4; i++) 
  for(j=0; j<4; j++) 
   if(node[bl.blockType][bl.blockDirect][i*4+j]==1) 
   { 
    map[bl.x+i][bl.y+j] = 10; 
   } 
 for(j=1; j<13; j++) 
  if(map[5][j] == 10) 
  {  
   system("clear"); 
   printf("game over !!!!!!!!!\n"); 
   exit(1); 
  } 
} 
  
 
void print_map()//打印地圖,顯示信息 
{ 
 int i,j; 
 for(i=5; i<21; i++) 
 { 
  for(j=0; j<14; j++) 
  { 
   if(map[i][j]==200)//左右邊界 
    printf("#"); 
   else if(map[i][j]==201)//下邊界 
    printf(" # "); 
   else if(map[i][j]==0)//空白地 
    printf(" "); 
   else if(map[i][j]==1)//移動(dòng)的俄羅斯方塊 
    printf(" * "); 
   else if(map[i][j]==10)//固定的俄羅斯方塊 
    printf(" @ "); 
  } 
  printf("\n"); 
 } 
} 
void delLine(int n)//消行 
{ 
 int i,j; 
 for(j = 1; j<13; j++) 
  map[n][j] = 0; 
 for(i = n; i>5 ; i--) 
  for(j = 1; j<13; j++) 
  if(map[i-1][j] != 1) 
  map[i][j] = map[i-1][j]; 
} 
 
void isFillLine()//是否滿足消行條件 
{ 
  
 int i,j; 
 int fals; 
 for(i=19; i>5; i--) 
 { 
  fals = 1; 
  for(j=1; j<13; j++) 
  { 
   if(map[i][j] != 10) 
   { 
    fals = 0;   
    continue; 
   } 
  } 
  if(fals) 
  { 
   delLine(i); 
  } 
 } 
} 
void down()//下移 
{ 
 int i, j; 
 int fale = 1; 
 for(i=3; i>=0; i--) 
  for(j=0; j<4; j++) 
   if(node[bl.blockType][bl.blockDirect][i*4+j] == 1) 
    if(map[bl.x+i+1][bl.y+j] == 10 || map[bl.x+i+1][bl.y+j] == 201) 
    { 
     change(); 
     fale = 0; 
     new_block(); 
     isFillLine();    
     return; 
    }  
 if(fale) 
 { 
  output(); 
  bl.x += 1; 
  input(); 
 } 
     
} 
void right()//右移 
{ 
 int i, j; 
 int fale = 1; 
 for(i=3; i>=0; i--) 
  for(j=0; j<4; j++) 
   if(node[bl.blockType][bl.blockDirect][i*4+j] == 1) 
    if(map[bl.x+i][bl.y+j+1] == 10 || map[bl.x+i][bl.y+j+1] == 200) 
    { 
     fale = 0; 
     return; 
    }  
 if(fale) 
 { 
  output(); 
  bl.y += 1; 
  input(); 
 } 
  
} 
void left()//左移 
{ 
 int i, j; 
 int fale = 1; 
 for(i=3; i>=0; i--) 
  for(j=0; j<4; j++) 
   if(node[bl.blockType][bl.blockDirect][i*4+j] == 1) 
    if(map[bl.x+i][bl.y+j-1] == 10 || map[bl.x+i][bl.y+j-1] == 200) 
    { 
     fale = 0; 
     return; 
    }  
 if(fale) 
 { 
  output(); 
  bl.y -= 1; 
  input(); 
 } 
  
} 
 
void change_block()//俄羅斯方塊變形 
{ 
 int i,j; 
 output(); 
 int fals = 1; 
 bl.blockDirect += 1; 
 bl.blockDirect %= 4; 
 for(i=0; i<4; i++) 
  for(j=0; j<4; j++) 
  if(node[bl.blockType][bl.blockDirect][i*4+j]==1) 
   if(map[bl.x+i][bl.y+j] != 0 ) 
   { 
    fals = 0; 
    break; 
   } 
 if(fals) 
 { 
  input(); 
 }else 
 { 
  bl.blockDirect -= 1; 
  input(); 
 } 
} 
 
char in_direct()//非堵塞輸入 
{ 
 fd_set fd; 
 struct timeval tv; 
 char ch; 
 FD_ZERO(&fd); 
 FD_SET(0, &fd); 
 tv.tv_sec = 0; 
 tv.tv_usec = 10; 
 if(select(1, &fd ,NULL, NULL, &tv) > 0) 
 {  
   ch = getchar(); 
 }  
 return ch; 
} 
int main()//q 退出游戲,a,d 左右移動(dòng),空格變形 
{ 
 srand(time(NULL)); 
 init_map(); 
 new_block(); 
 input(); 
 char ch; 
 int num = 0; 
 while(1) 
 { 
  usleep(500000); 
  system(STTY_ON TTY_PATH); 
  ch = in_direct(); 
  system(STTY_OFF TTY_PATH); 
  system("clear");  
  if(ch == 'a' && num <= 1) 
  { 
   left(); 
   print_map(); 
   num++; 
   continue; 
  }else if(ch == 'd' && num <= 1) 
  { 
   right(); 
   print_map(); 
   num++; 
   continue; 
  }else if(ch == ' ' && num <= 1 ) 
  { 
   change_block(); 
   print_map(); 
   num++; 
   continue; 
  }else if(ch == 'q') 
  { 
   system("clear"); 
   printf("gave over!!!!!\n"); 
   exit(0); 
  } 
  down(); 
  print_map(); 
  num = 0; 
 
 } 
 return 0; 
}

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

上一篇:C++中的內(nèi)存對(duì)齊實(shí)例詳解

欄    目:C語(yǔ)言

下一篇:C/C++ 中g(shù)cc和g++的對(duì)比與區(qū)別

本文標(biāo)題:C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊小游戲

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1316.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有