トップページ⇒tech
147コメント32KB

お前らの作ったアプリケーションをアップしてみろ

■ このスレッドは過去ログ倉庫に格納されています
0001パブリックプログラマーNGNG
クソアプリでもいいからアプきぼんぬ。
0097デフォルトの名無しさんNGNG
#include <stdio.h>

static char str[] = "
void bare(){
char* c = str;
while (*c){
if (*c == '\\\"') printf(\"\\\\\\\"\");
else if (*c == '\\\\') printf(\"\\\\\\\\\");
else putchar(*c);
c++;
}
}

void main(){
printf(\"#include <stdio.h>\\n\\nstatic char str[] = \\\"\");
bare();
printf(\"\\\";\\n%s\", str);
}
";

void bare(){
char* c = str;
while (*c){
if (*c == '\"') printf("\\\"");
else if (*c == '\\') printf("\\\\");
else putchar(*c);
c++;
}
}

void main(){
printf("#include <stdio.h>\n\nstatic char str[] = \"");
bare();
printf("\";\n%s", str);
}
0098デフォルトの名無しさんNGNG
今月のカレンダーを表示するperlスクリプト

($$,$:,$;,$=)=(localtime)[3..6];printf"%2d%s",$_,++$=%7?$":$/for(print($;+
1900,'/',$:+1,"/$$\n",$"x(($=-=$$-1)%7*3))..28+($:-1?3-$:%7%2:!($;%4)))
0099デフォルトの名無しさんNGNG
>>98
ブラクラ。
0100デフォルトの名無しさんNGNG
>>99
ちげーよ。あーほ。

100ゲット。
0101デフォルトの名無しさんNGNG
>>99
ワラタ

>>100
ネタだろ?
0102デフォルトの名無しさんNGNG
>>98
エレガントっつーかトリッキーやね。
0103デフォルトの名無しさんNGNG
#include <iostream.h>

enum Janken{ Guu, Tyoki, Paa, Owari };
enum Shouhai{ Kati, Make, Aiko };

class Computer{
public:
Janken janken_pon(){ return rand()%3;}
};

class Man{
public:
Janken janken_pon()
{
cout << "グーは0、チョキは1、パーは2、終了はそれ以外。どれ? ";

int x;
cin >> x;

if(x<0 || 2<x)
return Owari;

return x;
}

};

//続く
0104デフォルトの名無しさんNGNG
class Game{
Man man;
Computer com;

int kati_cnt, make_cnt, aiko_cnt;

bool kati(Janken j1, Janken j2)
{ return j1==Guu&&j2==Tyoki || j1==Tyoki&&j2==Paa || j1==Paa&&j2==Guu; }

bool aiko(Janken j1, Janken j2)
{ return j1==j2; }

Shouhai hantei(Janken man, Janken com)
{
if(kati(man, com)){
kati_cnt++;
return Kati;
}
else if(aiko(man, com)){
aiko_cnt++;
return Aiko;
}
else{
make_cnt++;
return Make;
}
}

//続く
0105デフォルトの名無しさんNGNG

kekka_hyouji(Janken man_j, Janken com_j, Shouhai shouhai)
{
switch(man_j)
{
case Guu:
cout << "あなたはグー、";
break;
case Tyoki:
cout << "あなたはチョキ、";
break;
case Paa:
cout << "あなたはパー、";
break;
}

switch(com_j)
{
case Guu:
cout << "コンピュータはグー、";
break;
case Tyoki:
cout << "コンピュータはチョキ、";
break;
case Paa:
cout << "コンピュータはパー、";
break;
}

switch(shouhai)
{
case Kati:
cout << "あなたの勝ち。\n";
break;
case Make:
cout << "あなたの負け。\n";
break;
case Aiko:
cout << "あいこです。\n";
break;
}
}


//続く
0106デフォルトの名無しさんNGNG

void syuukei_hyouji()
{
cout << "勝ち: " << kati_cnt
<< "負け: " << make_cnt
<< "あいこ: " << aiko_cnt << endl;
}

public:
Game(){ kati_cnt=make_cnt=aiko_cnt=0; }

void play()
{
Janken man_j, com_j;
Shouhai shouhai;

while( (man_j = man.janken_pon()) != Owari )
{
com_j = com.janken_pon();
shouhai = hantei(man_j, com_j);
kekka_hyouji(man_j, com_j, shouhai);
}

syuukei_hyouji();
}
};
//class Game 終わり

//続く
0107デフォルトの名無しさんNGNG
int main()
{
Game game;

game.play();

int x;
cin >> x;

return 0;
}

//以上じゃんけんゲーム
0108103NGNG
>>103-107
コンピュータと対戦する簡単なじゃんけんゲーム。
どうすか?オブジェクト指向してる?添削して。
0109103NGNG
自分がOOを理解してるか勘違いしてるか知りたいので。
0110103NGNG
>>107
>int x;
>cin >> x;

この2行要りません。
0111デフォルトの名無しさんNGNG
Javaみたいな、書き方だなぁ・・・
0112デフォルトの名無しさんNGNG
こ、コンパイルできん・・(VC6)
ネタ?
0113112NGNG
や、やっととおった・・・(喜泣

C++だったら型をちゃんとそろえてくれ、
enumとintがめちゃくちゃだぞ(泣

・・・・なにやってんだオレ(泣
0114103NGNG
>>113
スマソ
0115103NGNG
>>113
苦労してまでコンパイルするような代物じゃないので恐縮です。
0116デフォルトの名無しさんNGNG
ManとComputerは共通の親を持つのが普通と思われ。
0117デフォルトの名無しさんNGNG
じゃんけんのジャジは、どのクラスがするのが適当なのかな?
0118パブリックプログラマーNGNG
コンパイル済みきぼんぬ。
0119デフォルトの名無しさんNGNG
>>117
Janken クラスがメソッド int compareTo( Janken j ) を持つべき。
戻り値は -1 がjの負け、0であいこ、1でjの勝ち。
0120デフォルトの名無しさんNGNG
>118
垢下さい
0121デフォルトの名無しさんNGNG
こういうときにMXを使うんだよ
0122デフォルトの名無しさんNGNG
>>119
それ、引数のjに意味あるのか?
そのクラス自身だったら直接メンバ読み書きできるが。
0123デフォルトの名無しさんNGNG
>>122
おいおい自分自身の手とjの手を比較するんだろ
0124デフォルトの名無しさんNGNG
Jankenクラスのメソッド:
int getValue();
int compareTo(Janken j);

static で public で final な変数:
int GOO = 0;
int CHOKI = 1;
int PAR = 2;


Playerインターフェイスのメソッド:
Janken getJanken(); // null を返してきたら続行拒否

Playerを実装した ComputerPlayer, HumanPlayer クラスを作成

全体のコントローラとして Game クラスを作成


俺ならこんな感じに設計する
0125デフォルトの名無しさんNGNG
やっぱ、ゲームマスターであるGameクラスがジャッジするので正しくないか?
コンピュータをJunkenクラスとして作って、janken_pon()メソッドを仮想関数にして、
人間はjanken_pon()メソッドをオーバーライド。
で、GameクラスのメンバにJunkenクラスのポインタを二つ保持。

こうするとPC同士、人間同士、人間対PCが簡単に出来る。
0126デフォルトの名無しさんNGNG
>>125
・「人間はコンピュータでもある」○か×か。
・グーがチョキに負ける Janken2 があったらどうする。Gameに判断ロジックをどんどん追加していくのか。
0127デフォルトの名無しさんNGNG
>>126
でも、正直じゃんけん程度だとどうしてそうしないとならないか、
理解できない人間も多いんじゃないかな。

>・グーがチョキに負ける Janken2 があったらどうする。Gameに判断ロジックをどんどん追加していくのか。
こういう実装はありえないから(現実に無いから)、考えもしないだろうしね。

もっといい例は無いものか・・・

と、思ったらここはOOスレじゃないんだよな。
0128デフォルトの名無しさんNGNG
たとえば、限定ジャンケンとか
0129デフォルトの名無しさんNGNG
>>126
ごめん、じゃんけんプレイヤーから人間とコンピュータを派生しなきゃだね。

でも、じゃんけんのルールはGameが管理するでしょ?
じゃんけんプレイヤーは手を出すだけだし。
それか、Jadgeクラス作る?

Gameが進行役でJadgeが判断
0130デフォルトの名無しさんNGNG
じゃんけんより
CoreWarsキボン
つーか作ってみよかな。

サーバにアプしてあるアルゴリズムをダウンして
自分のソースとアプレットで自由に対戦。
自信作はアプ。
ランキングとかできると楽しいかも
0131デフォルトの名無しさんNGNG
>>130
CoreWarsって何?
0132デフォルトの名無しさんNGNG
>>でも、じゃんけんのルールはGameが管理するでしょ?

例えば String オブジェクトを大小比較する場合、
そのロジックは使う側がみんな持つのか?

「Jankenクラスを使うクラスはすべてその勝ち負け判断を個別に実装する必要がある」
再利用性って何?

>それか、Jadgeクラス作る?

スペルはともかく上よりはこの方がまあいいわな。
0133パブリックプログラマーNGNG
Jankenはお互いの手を見比べて勝ち負けを判断するものです。
なので、PlayerクラスにPlayerクラスを引数にする判定メソッドを作るべきです。
つまり
Playerに自分の出した手を保存しておく。
他Playerのオブジェクトと自分を比べる。
負けていたら 何もしない。
勝っていたら勝利宣言を出してから引数オブジェクトあぼーんして終わり。
0134パブリックプログラマーNGNG
あぼーんはしなくてもいいです。
0135コア ウォーズNGNG
コア ウォーズ
>>131
ttp://www.tk.airnet.ne.jp/saiey/comp/mie-bbs.cgi?s=82
0136デフォルトの名無しさんNGNG
>>135
どうも。
0137デフォルトの名無しさんNGNG
俺の公開して約1ヶ月でDL数0だった。でも某サイトにちょこっと
掲載されただけで、100くらいDLされた。評価なんてこんなものか。
0138デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>

main()
{
char com[1025];
printf("コマンド:");
gets(com);
system(com);
}


入力したコマンドを実行してくれるすごいあぷり
0139デフォルトの名無しさんNGNG
>>138
getsは止めとけ。
0140デフォルトの名無しさんNGNG
>>139
なぜ。
0141sageNGNG
だからfgetsにしとけっつーの
0142デフォルトの名無しさんNGNG
げっちゅーげっちゅげっちゅー♪
0143デフォルトの名無しさんNGNG
面倒だから放置しようっと
0144デフォルトの名無しさんNGNG
getsf
0145デフォルトの名無しさんNGNG
Vectorに登録しているんだが、月1で更新するとコンスタントに30DLとかなるのは
定期的にDLしてる奴がいるからか?
オンラインソフトを掲載する出版社が新着ソフトを週1でDLしてるとか?
そのへん詳しく教えろ。
俺のソフトを評価してDLしてくれてると勘違いしてしまうじゃないか。
0146デフォルトの名無しさんNGNG
program Rename;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
SR: TSearchRec;
Res: integer;
s,ss : string;
Pos: integer;
begin
Res:= FindFirst(ParamStr(1),faAnyFile,SR);
ss:= ParamStr(2);
while Res=0 do begin
s:= SR.Name;
Pos:= 1;
while Pos<>0 do begin
Pos:= AnsiPos(ss,s);
if Pos<>0 then begin
delete(s,Pos,3);
insert(' ',s,Pos);
end;
end;
writeln(s);
RenameFile(SR.Name,s);
Res:= FindNext(SR);
end;
FindClose(SR);
end.
0147デフォルトの名無しさんNGNG
kusosure age!
■ このスレッドは過去ログ倉庫に格納されています