ubuntu linux 終端 pop star 打星星遊戲

來源:互聯網
上載者:User

ubuntu 終端下的一款小遊戲,是看別人的做出來之後我想在linux做的,現在分享給大家,這個遊戲目前在android和iphone上很流行
首先這個遊戲使用非常簡單,首先有GCC 或者G++編譯下面的原始碼,然後直接運行就可以看見效果了,輸入你要消除位置的座標就可以了如果你輸入的座標位置不合法將給出提示。
注意事項:終端大小一定要大一點,保證整個圖形能放進去,否則不會有想要的效果          在輸入座標的時候兩個座標點之間有一個空格分開遊戲特點:這個遊戲可以在任意終端下運行,不藉助任何圖形庫,所有的看似圖形的東西都是由空格來控制的遊戲特色:我還沒見哪個遊戲可以在終端上玩的很好的而這個遊戲可以,即使你是完全的字元介面,那麼玩這款遊戲也是很好的!
還有一點要注意就是,有的linux可能對中文亂碼,那麼只要把原始碼中的“沸點工作室每個字全部換成兩個空格就行了!
遊戲規則:只需點擊兩個或兩個以上顏色相同的方塊即可消除
玩法:直接輸入你要消除相同顏色位置的座標(任意位置的都行)
有任何問題可以聯絡我:QQ 2632959687
註:沸點工作室是華中農業大學電腦科學與技術系的一個IT學生組織
下面是這款遊戲的原始碼:(GCC)
#include<stdio.h>#include<unistd.h>#include<time.h>#include<string.h>#include<stdlib.h>int map[11][11];int count_now;//本次消滅個數int total_score;//當前總分int last_have;//最後剩餘未消個數int target_score;//本關目標分數int level;//等級int cal_score(int t)//根據消除的個數決定分數{return t*(t*5);}int cal_target_score(int l){if(l<=5)target_score+=2000;else if(l<=10)target_score+=3000;else if(l<=15)target_score+=3500;else target_score+=4000;return 0;}int cal_bonous(int t){if(t>=10)return 0;elsereturn 2000-t*t*20;}bool check_one(int (*p)[11],int i,int j)//檢查單個點是否符合消除的條件{bool flag=false;if(i<0||i>=10||j<0||j>=10||map[i][j]==-1)return false;if(i-1>=0&&map[i-1][j]==map[i][j])flag=true;if(flag||(j+1<10&&map[i][j+1]==map[i][j]))flag=true;if(flag||(i+1<10&&map[i+1][j]==map[i][j]))flag=true;if(flag||(j-1>=0&&map[i][j-1]==map[i][j]))flag=true;return flag;}bool check_all(int (*p)[11]){int i,j;for(i=9;i>=0;i--)for(j=0;j<10;j++)if(check_one(p,i,j))return true;return false;}int init()///////////////////////////////////////////////init{int i,j;srand(time(NULL)); for(i=0;i<10;i++)for(j=0;j<10;j++)map[i][j]=rand()%5;return 0;}int show(int (*map)[11])//////////////////////////////////print{int i,j;for(i=0;i<10;i++){printf("                     %d ",9-i);for(j=0;j<10;j++)switch(map[i][j]){case -1:printf("        ");break;case 0:printf("\033[41m      \033[0m"); putchar(' ');putchar(' ');break;case 1:printf("\033[42m      \033[0m");putchar(' ');putchar(' ');break;case 2:printf("\033[43m      \033[0m");putchar(' ');putchar(' ');break;case 3:printf("\033[44m      \033[0m");putchar(' ');putchar(' ');break;case 4:printf("\033[45m      \033[0m");putchar(' ');putchar(' ');break;}putchar('\n');printf("                     %d ",9-i);for(j=0;j<10;j++)switch(map[i][j]){case -1:printf("        ");break;case 0:printf("\033[41m  沸  \033[0m"); putchar(' ');putchar(' ');break;case 1:printf("\033[42m  點  \033[0m");putchar(' ');putchar(' ');break;case 2:printf("\033[43m  工  \033[0m");putchar(' ');putchar(' ');break;case 3:printf("\033[44m  作  \033[0m");putchar(' ');putchar(' ');break;case 4:printf("\033[45m  室  \033[0m");putchar(' ');putchar(' ');break;}putchar('\n');printf("                     %d ",9-i);for(j=0;j<10;j++)switch(map[i][j]){case -1:printf("        ");break;case 0:printf("\033[41m      \033[0m"); putchar(' ');putchar(' ');break;case 1:printf("\033[42m      \033[0m");putchar(' ');putchar(' ');break;case 2:printf("\033[43m      \033[0m");putchar(' ');putchar(' ');break;case 3:printf("\033[44m      \033[0m");putchar(' ');putchar(' ');break;case 4:printf("\033[45m      \033[0m");putchar(' ');putchar(' ');break;}putchar('\n');putchar('\n');}printf("                   +   ");for(j=0;j<10;j++){ printf("%d %d %d ",j,j,j);printf("  ");}putchar('\n');printf("\033[36m                                        沸  點  工  作  室  制  作                   \033[0m");return 0;}int clean(int (*p)[11],int i,int j ,int real){if(i<0||i>=10||j<0||j>=10)//其實沒必要,但是效率要高一些return 0;//printf("OK:%d  %d\n",i,j);if(i-1>=0&&map[i-1][j]==real){  count_now++;map[i-1][j]=-1; clean(p,i-1,j,real); }if((j+1<10&&map[i][j+1]==real)){count_now++; map[i][j+1]=-1; clean(p,i,j+1,real); }if((i+1<10&&map[i+1][j]==real)){count_now++; map[i+1][j]=-1; clean(p,i+1,j,real); }if((j-1>=0&&map[i][j-1]==real)){ count_now++; map[i][j-1]=-1; clean(p,i,j-1,real); }return 0;}int down(int (*p)[11])//上面的下來{int i,j,c;for(j=0;j<10;j++){c=0;for(i=9;i>=0;i--){if(p[i][j]==-1)c++;elsep[i+c][j]=p[i][j];}for(i=0;i<c;i++)p[i][j]=-1;}return 0;}int left(int (*p)[11])////向左看齊//在向下對齊之後向右就簡單了{int i=9,j=0,c=0;int x;for(j=0;j<10;j++){if(p[i][j]==-1)c++;elsefor(x=0;x<10;x++)p[x][j-c]=p[x][j];}for(j=0;j<c;j++)for(i=0;i<10;i++)p[i][10-j-1]=-1;return 0;}int play_game(int(*p)[11])//////////////////////////////play{int i,j;show(p);printf("\n\n\n\033[33m                                             請輸入消除座標:\033[0m");char ch_i[20],ch_j[20];scanf("%s%s",ch_j,ch_i);if(strlen(ch_j)>1||strlen(ch_i)>1){ printf("輸入不合法,不符合條件\n"); return 0;} else {i=int(ch_i[0]-'0');j=int(ch_j[0]-'0');}i=9-i;if(check_one(p,i,j)){  printf("輸入OK\n"); clean(p,i,j,p[i][j]);down(p); left(p); } else printf("輸入不合法,不符合條件\n");return 0;}int main(){bool flag_go_on=true;//判斷是否繼續target_score=1000;level=1;while(flag_go_on){printf("begin new !\n\n\n\n");init();last_have=100;while(1){ count_now=0; play_game(map);  total_score+=cal_score(count_now); last_have-=count_now;if(!check_all(map)){total_score+=cal_bonous(last_have);if(total_score>=target_score){ printf("congrulations you win !\n");flag_go_on=true;level++;cal_target_score(level);}else{ flag_go_on=false; printf("loser ! hahahahahahahahah...................\n");}printf("last_have:%d ,bonus:%d,total:%d\n",last_have,cal_bonous(last_have),total_score);break;}printf("clean star num:%d ,add:%d ,total:%d\n,level:%d ,target score:%d\n",count_now,cal_score(count_now),total_score,level,target_score);}show(map);sleep(10);}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.