答えは皆さんが出してくださっているのであれなんですけどだめ押しで
> if文をつかって表示するかしないかを
とは?
何の事か分からないんですけどリストを上げてみてもらえますか?
こん!<=^・^=>
http://www9.plala.or.jp/sgwr-t/c/sec10-2.html
ついでにこんなとこを読まれてみては?
どの程度理解出来ますか?
C++の前に
http://www9.plala.or.jp/sgwr-t/
でも読んでC言語を勉強された方がよろしいかも。
こん!<=^・^=>
>> if文をつかって表示するかしないかを
> 何の事か分からないんですけどリストを上げてみてもらえますか?
失礼。
> if(a==0){
> pDC->TextOut(x,y,bon);
> }
これの事ね。
こん!<=^・^=>
int型のメンバ関数donを作って次のようなプログラムを作りました
int CTestView::don(int a,int b)
{
int i,r,c;
for(i=0;i<100;i++){
for(r=0;r<100;r++){
if(a==i&&b==r){
c=1;
break;
}
else {c=0;}
}
if(c==1)break;
}
return(c);
}
そして
// CTestView クラスの描画に
下のようなプログラムをつくりました
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
int x,y,a;
char b;
x=40; y=200;
a=don(x,y);
if(a==0){
pDC->TextOut(x,y,bon);
}
> x=40; y=200;
> a=don(x,y);
まぁあのforループでは一生rは200にはなりそうも無いからaも一生0ですわね。
あと、お願いだからインデントあわせて。見づらいから。
こん!<=^・^=>
xとyを配列にしたいんですが
どうすればよいでしょう?
2002/11/25(月) 22:26:57 の一部に書き間違いがありました
> pDC ->TextOut(x[0], x[y], don);
は
pDC ->TextOut(x[0], y[0], don);
とでも訂正してください。x, y の添え字はあなたの考える適切な値に
してください。私には、どの添え字が適切なのか判断できませんので、
0 にしておきました
> 島 2002/11/25(月) 22:26:57
を読んでいないんですか?
そのままの解答だと思いますけど。他に何かありますか?
こん!<=^・^=>
こんばんは、RAPTです。
(配列にするあたりは自分でやってください)
# 通常、returnに、()は不要です。
# return(c); ではなく、return c; とします。
CTestView::don()なんて、わざわざ変数cを使う意味はあるのかな。
int CTestView::don(int a,int b)
{
int i,r;
for(i=0;i<100;i++){
for(r=0;r<100;r++){
if(a==i && b==r)
return 1;
}
}
return 0;
}
これだけでいいような。しかも、a, bが、100以上の時、必ず0を返すし。。
もっと言えば、ここで1万回のループをする必要性は?
これって、実は
int CTestView::don(int a, int b)
{
return (a>=0 && a<100 && b>=0 && b<100) ? 1 : 0;
}
で終わるとか?
Windows98/VC++6.0std/SDK-may2002/ATL3.0/WTL7.0
皆様
いけるようになりました
ありがとうございました
やりたかったことは100*100のマスに
点(座標)があるかないかを判別する
ようなプログラムをつくりたかったんです
だから配列を作って座標を登録してそのなか
にあるかないかをしたかったそれだけなんです。
すいませんでした素人なもんで理解力がなくてm(__)m
> やりたかったことは100*100のマスに
> 点(座標)があるかないかを判別する
だったら
int p[100][100];
の二次元配列を
p[y][x]でふった方が分かりやすかったかも知れませんね。
あしからず・・・
こん!<=^・^=>
> やりたかったことは100*100のマスに点(座標)があるかないかを判別する
それだったら、最初からそういってくれれば。
void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
int x,y,a;
char b;
x=40; y=200;
// a=don(x,y); // removed
// inserted
CPoint pt (x, y);
CRect rc (0, 0, 99, 99); // (0,0)を左上とする、100x100のマス目
// ende
if(!rc.PtInRect(&pt)/*a==0*/){ // changed
pDC->TextOut(x,y,bon);
}
}
こんなこともできます。後はヘルプを参照。参考までに。
Windows98/VC++6.0std/SDK-may2002/ATL3.0/WTL7.0
> if(!rc.PtInRect(&pt)/*a==0*/){ // changed
if(rc.PtInRect(pt)/*a==0*/){ // changed
それをやるならこれのような・・・
こん!<=^・^=>
突っ込みついでにこんなのはいかが。
Viewクラスのメンバ変数に
CPoint m_cPoint;
コンストラクタで
CEView::CEView():m_cPoint(0,0)
{
}
描画で
void CEView::OnDraw(CDC* pDC)
{
CRect rc (0, 0, 300, 300); // (0,0)を左上とする、100x100のマス目
if(rc.PtInRect(m_cPoint)/*a==0*/){ // changed
pDC->TextOut(m_cPoint.x,m_cPoint.y,bon);
}
}
ほんでマウスイベントで
void CEView::OnMouseMove(UINT nFlags, CPoint point)
{
m_cPoint = point;
Invalidate(TRUE);
}
一例・・・
こん!<=^・^=>