妹「プログラミングスレ」

このエントリーをはてなブックマークに追加
1以下、名無しにかわりましてVIPがお送りします
おわり
2以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 19:49:31.52 ID:+hROA2ti0
>>1
爆発しろよ・・・
3以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 19:52:14.16 ID:CRXU1S8A0
ここはボクが乗っ取ったっ
4以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 19:55:14.67 ID:O2rN7Qli0
妹「まずは開会式だ」
5あぼーん:あぼーん
あぼーん
6以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 20:26:34.84 ID:LAdWo1R60
妹「ここはプログラミングについて教えてもらったり、教えてあげたりするスレだよ!
初心者から上級者まで、どんな人でもウェルカムなんじゃよ!!

Wiki(まだまだ未完成。編集人募集!)
http://vipprog.net/wiki/
共有blog(プログラミング関連のコラム☆編集大歓迎!)
http://vipprog.tumblr.com/
避難所(規制組来たれ)
http://ex14.vip2ch.com/test/read.cgi/part4vip/1232447584/
うpろだ
http://www8.uploader.jp/home/vipprog/

IRC(規制組来たれ、パスはnullpo)
サーバー名: irc.scenecritique.com チャンネル名: #vipprog
ポート番号: 6667 文字コード: ISO-2022-JP
IPアドレスが暗号化されているので安心!

基本的にプログラミングに関することならどんな質問でもOK!
質問者はあらかじめWikiぐらいには目を通してね!(特にこれからプログラミングを始める方)
それと、回答者が答えやすいようになるべく情報をいっぱい出そう!
×「□□ってどうやるの?」
○「□□ってどうやるの? 言語とOSは△△、☆☆までできます!」
×「○○ってやりたいのにエラーが出ます」
○「○○ってやると××ってエラーが出ます」
みたいに!
また、回答者はヌクモリティをもって答えよう
ググレカスとか、そんな悲しいこといわ…だが一回はググレカス

それじゃ質問、どんと恋!」
7以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 20:40:51.24 ID:Mx02dQZi0
今日は各地でアンチハム運動が展開されてるみたいだな
何かあったのか?
8以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 20:49:33.94 ID:U8SOcadY0
そいや、昼にそんなスレたってたな
>>7
なんもないさ 火種はあったから  あとはノリでずどーん

でC++で構造体 Charadateをつくって
そこからクラスないで
class HERO :public Chara{
vector<Charadate> hdate;
public:
void init();
};
#endif

void HERO::init(){
hdate.clear();
Charadate hero;
hero.maxhp=200; hero.hp=150;
hero.atk=320; hero.def=211; hero.matk=102; hero.mdef=321 ;
hero.exp=21; hero.lv=1;
hero.state=A_NORMAL;
hdate.push_back(hero);
}

ってやろうとしてるんだが  これだけ見てまず書式の段階で間違えてるのどこかない?
10以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 20:55:40.23 ID:Mx02dQZi0
>>9
#if がないのに #endif だけある
11以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 20:59:07.20 ID:gDIUdwVT0
dataのつもりがdate
12以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 20:59:13.81 ID:oizp8O1d0
>>10
すまん そこらへんは端折った・・・ メインではしっかり書いてるっす
#include "hero.h"
#include <iostream>

int main(){
HERO henntai;
henntai.init;


cout<<"",henntai.hdate.at(hp)<<endl;
cout<< "uheheheh"<< endl;
return 0;
}

1>hero.cpp
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\charadate.h(4) : error C2143: 構文エラー : ';' が 'using' の前にありません。
1>main.cpp
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\charadate.h(4) : error C2143: 構文エラー : ';' が 'using' の前にありません。
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(6) : error C3867: 'HERO::init': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&HERO::init' を使用してください
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(9) : error C2065: 'hp' : 定義されていない識別子です。

というエラーが   全部は張り切れないんで 聞かれ次第貼ります
13以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:02:17.75 ID:Mx02dQZi0
>>12
とりあえずhero.h全部うp
14以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:02:59.44 ID:Mx02dQZi0
>>12
ところで

henntai.init();

の()を忘れてるな
15以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:04:19.19 ID:oizp8O1d0
#ifndef __HERO_H__
#define __HERO_H__
#include "Chara.h"
#include "charadata.h"
#include <vector>
using namespace std;
class HERO :public Chara{
public:
vector<Charadata> hdata;
void init();
};
#endif

hero.cpp
#include "hero.h"
#include <vector>

void HERO::init(){
hdata.clear();
Charadata hero;
hero.maxhp=200; hero.hp=150;
hero.atk=320; hero.def=211; hero.matk=102; hero.mdef=321 ;
hero.exp=21; hero.lv=1;
hero.state=A_NORMAL;
hdata.push_back(hero);
}
16以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:08:53.13 ID:Mx02dQZi0
>>15
ここではあまり問題なさそうだから次は "Chara.h" "charadata.h"を

あとヘッダで using namespace は禁止
名前空間の存在意義がなくなる
17以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:15:19.15 ID:oizp8O1d0
#ifndef __CHARA_H__
#define __CHARA_H__
#include <iostream>
class Chara{
protected:
virtual void attack(){}
virtual void tokugi(){}
virtual void magic(){}
virtual void hitattack(){} }
#endif

#ifndef __CHARADATA_H__
#define __CHARADATA_H__
#include <iostream>
struct Charadata;
enum BAD_STATUS{
A_NORMAL, A_POISON , A_MAGICSEAL, A_PANDMSEAL
// 左から 正常 毒 魔法封印 毒+魔法封印  敵味方自分共通だからこれでよし。    のはず
};
struct Charadata{//キャラクター構造体
public:
int maxhp,hp;
int maxmp,mp;
int atk,def;
int matk,mdef;
int exp,lv;
BAD_STATUS state;
int yobi[6];
};
#endif
18以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:18:25.78 ID:Mx02dQZi0
>>17
Charaの最後に ; がない
19以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:18:32.43 ID:9tdD8idFP
ttp://www2.uploda.org/uporg2074570.jpg
俺の半田付けできる限界
20以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:19:48.51 ID:U8SOcadY0
昼の続きか
21以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:22:08.29 ID:oizp8O1d0
で、unsing〜〜をCPPのみにくっつけ そのた訂正したら
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C2143: 構文エラー : ';' が '<' の前にありません。
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C2238: ';' の前に無効なトークンがあります。
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.cpp(5) : error C2065: 'hdata' : 定義されていない識別子です。
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.cpp(5) : error C2228: '.clear' の左側はクラス、構造体、共用体でなければなりません
1> 型は ''unknown-type'' です。
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.cpp(11) : error C2228: '.push_back' の左側はクラス、構造体、共用体でなければなりません
1> 型は ''unknown-type'' です。
1>main.cpp
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C2143: 構文エラー : ';' が '<' の前にありません。
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(11) : error C2238: ';' の前に無効なトークンがあります。
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(8) : error C2039: 'hdata' : 'HERO' のメンバではありません。
1> c:\documents and settings\oener\my documents\visual studio 2005\projects\test\hero.h(6) : 'HERO' の宣言を確認してください。
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(8) : error C2228: '.at' の左側はクラス、構造体、共用体でなければなりません
1>c:\documents and settings\oener\my documents\visual studio 2005\projects\test\main.cpp(8) : error C2065: 'hp' : 定義されていない識別子です。
main.cpp
#include "hero.h"
#include <iostream>
using namespace std;
int main(){
HERO henntai;
henntai.init();

cout<<"",henntai.hdata.at(hp)<<endl;
cout<< "uheheheh"<< endl;
return 0;
}
22以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:25:22.83 ID:gDIUdwVT0
ちゃんとC++の文法勉強してこいと
23以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:25:54.09 ID:U8SOcadY0
.hでvectorつかってるとこはstdから指定しないとだけど
データ複数もつの?hdate 日付じゃねぇっつーのってのはおいといて。
24以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:26:31.42 ID:Mx02dQZi0
>>21
っstd::vector

using namespace std; はおまじないってタイプの入門書を読んだな?
25以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:29:44.37 ID:oizp8O1d0
>>24
サー、イエッサー!
26以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:35:44.43 ID:sxLV6QkO0
なんつーか、いきなりゲームを作ろうという意欲は買うが
もう少し基礎的なところからコツコツ積み重ねたほうがいいと思う
hello worldくらいはさすがにやってるだろうけど
27以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:35:57.17 ID:U8SOcadY0
作法を自分がどこで覚えたか記憶にないけど
たぶん本にでも書いてあると思うんだが
28以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:37:14.25 ID:Mx02dQZi0
>>25
オーケー、じゃあそのおまじないの意味を教えてやろう

〜第1章 namespace とは〜
例えばおまいが、class Character を作りたいとする
だが偶然、おまいが使っていたライブラリに class Character があった場合に困る

尤もこの程度なら「じゃあ俺はCharacterじゃなくてCharaって名づけるわwww」で済むわけだが、
もし class Character が2つの別々のライブラリにあったりすると名前を変更できない
そういう時に、「ライブラリAの」Character/「ライブラリBの」Characterを区別できるように、
「」で括った部分を宣言する
これが名前空間で、namespace LibraryA { class Character; } のように書く

(第2章に続く)
29以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:45:30.81 ID:Mx02dQZi0
〜第2章 namespace の使い方〜

namespace LibraryA {
 class Character {
  // 省略
 };
}

の Character を使用するためには、

LibraryA::Character chara1;

のようにする。メンバ関数の定義と同じ感じだな
「::」は「スコープ演算子」と呼ばれて、:: 以降の識別名がどの識別名に属するかを指定する
クラス Hoge 内の init() 関数なら Hoge::init() 、
名前空間 LibraryA の Character クラスなら LibraryA::Character 、といった具合にだ

ただ、LibraryA:: を毎回わざわざ指定するのはあまりに面倒なので、
「名前空間 LibraryA の」を省略できるなら省略してかまわない、とすることができる
これが「using namespace LibraryA;」の書式

なおこれをヘッダで使うなというのは、そのヘッダをインクルードした全てで using が有効になり、
何らかの理由で「LibraryA::」を省略したくない場合にも、それができなくなってしまうから

(第3章に続く)
30以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:49:56.93 ID:oizp8O1d0
>>29
把握
31以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:54:00.00 ID:Mx02dQZi0
〜第3章 std 名前空間〜

さて、C++の入門書では、必ずといっていいほど最初に
using namespace std;
の一文がある。つまりそのソースでは、どこかで std 名前空間の中身を使ってるってことだ
それを説明するには、まずこの奇妙な std が何を意味するのか説明したほうがいいだろう

std=STandarD(標準)

つまりこの std 名前空間は、標準ライブラリであることを示す
恐らく今の段階では、#include <hoge> の形式で指定するヘッダは全て標準ライブラリだろう
ということは、このインクルードがなければ使えなかった識別名は、全てstd名前空間にある
例えば cout は std::cout だし、vector も std::vector
using namespace std; をしていない場合は、これらを全部フルネームで書かなければいけない
32以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:57:22.95 ID:oizp8O1d0
>>31
それが面倒なら using namespace std;と
ただ、それをヘッダでやったらその後全部にかかって
>>「ライブラリAの」Character/「ライブラリBの」Characterを区別できるように
だからヘッダでVECTORつかいたければ
std::vector〜〜なんちゃかんちゃら〜〜
33以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:59:21.83 ID:Mx02dQZi0
>>32
そういうこと

ヘッダの最後で unuse namespace std; みたいにできればいいんだができないからな
34以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 21:59:50.75 ID:aIZz6P6R0
typedefじゃダメなの?
35以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 22:02:50.22 ID:U8SOcadY0
これの目的なんだっけ? コンパイルエラーとるのが目的?
36以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 22:04:19.53 ID:n5TQbUAx0
C#使ったほうがいいな
C++は泥沼みたいだし
37以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 22:05:03.62 ID:Mx02dQZi0
>>34
typedef はクラスにしか効かないのと、使う識別名ごとに宣言しなきゃならんからな
変数とか関数の場合も参照を使えば何とかならんこともないが
別にそれで問題ないなら、それでもいいと思うよ

あと typedef の弱点は、

template<class T> typedef std::vector<T> VECTOR<T>;

みたいなテンプレート化が許されていないこと
38以下、名無しにかわりましてVIPがお送りします:2009/03/08(日) 22:13:59.01 ID:aIZz6P6R0
>>37
ああ、たしかに
39ハム速転載禁止
>>5
あぼ〜んはえええwww