close
負責金錢的 function// 這只是為了保留// finance.c// ---// can_afford() checks if this_object() can afford a price, it returns:// // 0: cannot afford.// 1: can afford with proper money(coins).// 2: can afford, but don't have enough proper money(coins). #no use#// ---// can_afford() pay_money() pay_player()// 21 47 48 36 47 coin == 21 diamond 47 cash 48 gold 36 silver 47 coin// // --- 2002/7/31 modify by asin#define Path ({ COIN_OB, SILVER_OB, GOLD_OB, \ CASH_OB, PEARL_OB })int pay_money( int amount ){ int level, i, *amount_A, *amount_B; object *money, me=this_object(); money = allocate(5); amount_A = allocate(5); amount_B = allocate(5); money[4] = present("pearl_money" ,me); money[3] = present("cash_money" ,me); money[2] = present("gold_money" ,me); money[1] = present("silver_money" ,me); money[0] = present("coin_money" ,me); for( level = 0; amount > 0 ; ) { amount_A[level] = amount%100; amount/=100; level++; } for ( i = 0; i < 5; i++ ) { if( money[i] ) { amount_B[ i ]+= money[i]->query_amount(); } amount_B[i] -= amount_A[i]; if ( amount_B[i] < 0 ) { amount_B[ i ]+=100; amount_B[i+1]-= 1; } else if ( amount_B[i] >= 100 && i!= 4 ) { amount_B[i+1]+=amount_B[i]/100; amount_B[ i ]%=100; } if( money[i] ) { money[i]->set_amount( amount_B[i] ); } else if ( amount_B[i] ) { money[i]= new( Path[i] ); money[i]->move( me ); money[i]->set_amount( amount_B[i] ); } } return 1;}int pay_player( int amount ){ int level, i, *amount_A, *amount_B; object *money, me=this_object(); money = allocate(5); amount_A = allocate(5); amount_B = allocate(5); money[4] = present("pearl_money" ,me); money[3] = present("cash_money" ,me); money[2] = present("gold_money" ,me); money[1] = present("silver_money" ,me); money[0] = present("coin_money" ,me); for( level = 0; amount > 0 ; ) { amount_A[level] = amount%100; amount/=100; level++; } for ( i = 0; i < 5; i++ ) { if( money[i] ) { amount_B[ i ]+= money[i]->query_amount(); } amount_B[i] += amount_A[i]; if ( amount_B[i] < 0 ) { amount_B[ i ]+=100; amount_B[i+1]-= 1; } else if ( amount_B[i] >= 100 && i!= 4 ) { amount_B[i+1]+=amount_B[i]/100; amount_B[ i ]%=100; } if ( money[i] ) { money[i]->set_amount( amount_B[i] ); } else if ( amount_B[i] ) { money[i]= new( Path[i] ); money[i]->move( me ); money[i]->set_amount( amount_B[i] ); } } return 1;}int can_afford( int amount ){ int i, level, *amount_A; object *money, me=this_object(); i = 5; money = allocate(5); amount_A = allocate(5); money[4] = present("pearl_money" ,me); money[3] = present("cash_money" ,me); money[2] = present("gold_money" ,me); money[1] = present("silver_money" ,me); money[0] = present("coin_money" ,me); for( level = 0; amount > 0 ; ) { amount_A[level] = amount%100; amount/=100; level++; } while ( i-->0 ) { if ( !money[i] && amount_A[i] ) return 0; else if ( !money[i] ) continue; if ( money[i]->query_amount() > amount_A[i] ) return 1; else if ( money[i]->query_amount() == amount_A[i] ) continue; else return 0; }} .msgcontent .wsharing ul li { text-indent: 0; } 分享 Facebook Plurk YAHOO! .
arrow
arrow
    全站熱搜

    zd0000683 發表在 痞客邦 留言(0) 人氣()