作者eddle (我要當壞人)
看板C_and_CPP
標題[情報] BBS C++ 標色工具
時間Wed Nov 7 04:06:47 2007
有鍵於之前 LiloHuang大,分享過
但是由於顏色實在太亮了
所以我改一個比較暗的色調
載點:
http://mail.cycu.edu.tw/s9427222/BBS_color.rar
將所要轉的C++ code 檔名打上
結果會存在 "color_"+檔名+".txt" 裡
將它複製出來 ANSI彩色貼上(KKMAN)於BBS就行了
這個工具不會自動修改寬度
由於還是初學者,能用到這樣是我的最大能耐了
如果有什麼bug的話,請告之,我會盡量debug的
範例如下: 猜數字遊戲
------------------------------------------------------
/****************************
** 猜數字遊戲 1A1B **
****************************/
/*玩家,輸入由 0~9 所組成的,四個數字*/
/*與電腦產生的答案比對,
如果所猜的位置與答案的位置相同,A的值增加
如果所猜的位置與答案的位置不相同,B的值增加*/
/* 4A0B 表示猜對了 BINGO!! */
# include <stdio.h>
# include <string.h>
# include <stdlib.h>
# include <iostream>
# include <time.h>
// programmer: eddie wu 吳偉傑
// Copyright: Wu,Wei-Chieh
// Department of Information and Computer Engineering
// Chung Yuan Christian University
// 開發平台: Windos XP
// 開發環境: Dev-C++
using namespace std;
typedef char Str5[
5];
FILE *FilePtr;
//指定寫入record.txt的指標
int guessTimes=
0;
//猜過的次數,為globle 全域變數
void CreateAnswer(Str5 & answer);
//電腦自行產生"正確數字"
void Guess(Str5 & guess);
//玩家進行猜測
bool CheckGuessOk(Str5 guess);
//檢查:玩字輸入的數字
void Result(Str5 answer,Str5 guess,
bool & correct,
bool & giveUp);
//判斷結果
int main(){
Str5 answer =
"";
Str5 guess =
"";
bool correct =
false;
//是否為"正確答案 "
bool giveUp =
false;
//是否"放棄"
FilePtr = fopen(
"record.txt","w+");
//開啟record.txt
CreateAnswer(answer);
do{
Guess(guess);
//玩家輸入數字
if( CheckGuessOk(guess) ){
//檢查:輸入的數字,是否為正確的輸入
guessTimes++;
//猜的次數,增加一次
Result(answer,guess,correct,giveUp);
//判斷結果
}
//if(為正確的輸入)
}
while( (!correct)&&(!giveUp) );
fclose(FilePtr);
//關閉record.txt
system(
"pause");
return 0;
}
//main()
void CreateAnswer(Str5 & answer)
{
srand(time(NULL));
//以時間函數為種子數
int ture[
4];
//正確數字
for(
int n=
0;n<
4;n++)
//以亂數產生正確數字
{
ture[n]=rand()%(
10);
//產生第一數
if(n==
1)
//第二數重複數字就再取亂數
{
while(ture[n]==ture[n-
1]){
ture[n]=rand()%(
10);
//產生第二數
}
//while
}
//if n==1
else if(n==
2)
//第三數重複數字就再取亂數
{
while(ture[n]==ture[n-
1] || ture[n]==ture[n-
2]){
ture[n]=rand()%(
10);
//產生第三數
}
//while
}
//if n==2
else if(n==
3)
//第四數重複數字就再取亂數
{
while(ture[n]==ture[n-
1] || ture[n]==ture[n-
2] || ture[n]==ture[n-
3]){
ture[n]=rand()%(
10);
//產生第四數
}
//while
}
//if n==3
else
;
//do nothing 用意: n==0 已經產生好 亂數,所以不做任何事
}
//for 以亂數產生正確數字
for(
int z=
0;z<
4;z++){
answer[z]=ture[z]+
48;
//char = int + 48;
}
//for 將產生好的亂數,放在answer的字串裡
//---------------------把answer寫入record.txt--------
fprintf(FilePtr,
"電腦選定的號碼為:%s\n",answer);
}
//CreateAnswer
void Guess(Str5 & guess)
{
printf(
"Guess Number:");
scanf(
"%s",&guess);
}
//Guess
bool CheckGuessOk(Str5 guess)
{
if(strcmp(guess,
"0") ==
0)
;
//do nothing 用意:不然會進入第二個判斷式(字串長度 < 4)
else if( (strlen(guess) <
4) || (strlen(guess) >
4) ){
printf(
"please keyin four numbers!\n");
return false;
}
//else if 輸入的字串(小於)或者(大於)4個數字
else if( (guess[
0] == guess[
1]) || (guess[
0] == guess[
2])||
(guess[
0] == guess[
3]) || (guess[
1] == guess[
2])||
(guess[
1] == guess[
3]) || (guess[
2] == guess[
3])
){
printf(
"please keyin four different numbers!\n");
return false;
}
//else if 判斷 玩家是否有輸入相同的數字 ex: 1244
else{
for(
int i=
0;i<
4;i++)
//char = int + 48
if( ( guess[i] <
48) || (guess[i] >
57) ){
printf(
"please keyin 0~9\n",guess[i]);
return false;
}
//if
}
//else ex: "rt56" is not correct input,please input 0~9
return true;
}
//CheckGuessOk
void Result(Str5 answer,Str5 guess,
bool & correct,
bool & giveUp)
{
if(strcmp(guess,
"0") ==
0){
giveUp=
true;
printf(
"The answer is %s\n",answer);
fprintf(FilePtr,
"使用者投降。\n");
return;
//跳出 Result function
}
//if 判斷 玩家是否認輸
int a=
0,b=
0;
//各為幾A幾B的變數
for(
int i=
0;i<
4;i++)
//檢查幾A幾B answer[i]
for(
int j=
0;j<
4;j++)
// guess[j]
if( answer[i] == guess[j] ){
//是否為相同的數字
if(i == j)
//位置相同
a++;
else //位置不同
b++;
}
//if(answer[i] == guess[j])
printf(
"%dA%dB\n",a,b);
fprintf(FilePtr,
"使用者第%d次猜測:%s -- %dA%dB\n",guessTimes,guess,a,b);
if(a==
4){
//如果猜對了
correct =
true;
printf(
"BINGO!!\n");
fprintf(FilePtr,
"BINGO!!\n");
}
//if (猜對了)
}
//Result
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.105.89
推 redray:Push! Thank you very much! :) 11/07 09:46
※ 編輯: eddle 來自: 59.117.173.184 (11/07 19:16)
推 freesamael:推,好用心 11/07 20:40
推 eddle:謝謝 11/07 20:51
推 LiloHuang::) 看來先前的版本顏色太亮是詬病 改天我那個再修正一下 11/08 10:19
推 aecho:推 好棒啊~ 11/09 09:10