はじめまして。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yuka

はじめまして。

#1

投稿記事 by yuka » 13年前

服装のコーディネートのソフト(ゲーム?)を作りたいと思っています。
2枚の服のうち1枚を選ぶと、それに合わせる服が複数出てきて、その中から合わせる服を選ぶ。というのを繰り返し、最後に全部のコーディネートが出てくる。っていうような。
こういったものも、C言語で作れますか?
服は写真を撮影して使いたいと思っています。

バグ

Re:はじめまして。

#2

投稿記事 by バグ » 13年前

どうも、こんにちわ(^-^)

構造体を利用すれば、楽に管理できるのではないかと思います。例えば…

struct Dressing
{
int Hat; //帽子
int Clothes; //服
int Pants; //パンツ
int Shoes; //履物
};

こんな感じの構造体を用意して、それぞれを選択するプログラムを作り、最後にまとめて表示すればいいのではないかと思うのですが?

管理人

Re:はじめまして。

#3

投稿記事 by 管理人 » 13年前

yukaさん、始めまして^^
管理人です。

今回服装のコーディネートのソフトを作りたいという事で、そのようなソフトを作る事は可能ですよ。
選択は自分でするんですよね?ソフトに選ばせるといったことをしたいのならちょっと考えてプログラムする必要があると思いますけど
自分で選ぶならすぐ出来ますよ^^

案外、プログラムを作るより、服装を違和感なく全部同じように撮影する方が難しいかもしれません。

・マネキンに服を着せ、服装と色の異なる背景の場所で撮影。
・服とカメラの距離は常にぴったり同じにして、服によって拡大率が変わることのないように。
・撮影する時の光の角度、輝度も同じに。

等に気をつけて撮影して、それぞれの素材を用意しましょう。

プログラムはDXライブラリを使えば簡単です。
ゲームプログラミングの館にDXライブラリの使い方書いてあるんで
是非参考にしてみてください^^

http://dixq.net/g/

作れますか?

作れますよ

って答えじゃ全く回答になってないですから、これからも具体的な回答をしていきたいと思います^^
プログラミングについて、素材の用意のし方について、また何でも聞いてくださいね^^
とりあえず、画像を扱うにはDXライブラリを勉強するのが一番だと思います☆

管理人

Re:はじめまして。

#4

投稿記事 by 管理人 » 13年前

バグさんありがとうございます^^
そうですね、構造体を使って整理し、画像は対応した番号の画像に合わせるといいでしょう。
とりあえず、今から行う順番は、

DXライブラリを勉強

素材(服の写真)を準備

ソフトの製作

という順番でしょう。
「えぇ・・今から何か新しいライブラリ勉強するの・・」
と思わなくても大丈夫です^^
DXライブラリはとっても簡単ですから☆

さしあたり、「キャラの区間移動」とかってのは関係ありませんから、ゲームプログラミングの館の~基本編~で十分です。
その中でも

1. 必要なものをそろえる。
2. ウィンドウを表示する。
3. 画像を表示する。
4. 透過処理をした画像を表示する。
6. 文字を表示する。
7. 書式付で文字を表示する。
9. 輝度をセットする。
10. 入力状態を取得する。
11. 全ての入力状態を取得する。
12. 画像を動かす。
13. 裏画面処理をして画像を動かす。
14. メモリに画像を読み込んで表示する。

これだけ勉強すればもうソフトは作れるでしょう^^
とりあえずDXライブラリやってみてください♪

yuka

ありがとうございます♪

#5

投稿記事 by yuka » 13年前

回答ありがとうございます!早速勉強しよう!
と思ったのですが、実はこれ、大学の卒業制作にしようと思ってたんですが、先生に行ったら、データベースとかフラッシュを使ってやれと言われまして…
情報系の大学に行っていながらプログラミングとかコンピュータの事が全然解らない私にとって、地獄です。
でも、とりあえず、C言語でも検討してみます!(^^)

管理人

Re:ありがとうございます♪

#6

投稿記事 by 管理人 » 13年前

データベースを使うという事はSQLとか使うんですか?
フラッシュもActionScriptを使って?
Cで作ってはいけないって珍しい事言う教授ですね><;

ActionScriptでは力になれませんけど、Cでしたらいつでも力になりますよ☆

自分でちょっとコーディネイトプログラムを作りかけてみたんですが、
フラッシュで作らないといけないのでしたら残念です。
またいつでもお立ち寄り下さい☆

yuka

ありがとうございます♪

#7

投稿記事 by yuka » 13年前

作ってくれてたんですか??
申し訳ないです。。

データベースはAccessで作ろうと思っています。
データベースとか色々と仕組みがよく分からないので
一からやらなきゃいけないんですけど(^^;)
C言語で、洋服を登録、更新する画面と(管理画面的なもの)と、
ゲーム画面を分けて作って、相互性を持たせることもできるんですかね?
Cで作れるなら、作ってしまえば先生も文句は言わないと思うんですけど、
ただ、服を選んでいって表示するだけだとダメみたいなんです。
あと、Cで作ったものをWeb公開って可能なんでしょうか?

質問ばかりですみません(><)

管理人

Re:ありがとうございます♪

#8

投稿記事 by 管理人 » 13年前

yukaさん、こんにちは^^

だんだん涼しくなってきましたね。
いかがお過ごしでしょうか?

>作ってくれてたんですか??
>申し訳ないです。。

いやいや、いいですよ、気にしなくて^^

>データベースはAccessで作ろうと思っています。

あ、プログラムで作るわけじゃないんですね。
マイクロソフトのソフトでしたっけ?

>C言語で、洋服を登録、更新する画面と(管理画面的なもの)と、
>ゲーム画面を分けて作って、相互性を持たせることもできるんですかね?

ん~と、どれをどの言語で作るんでしょうか?
登録、更新はAccessとかいうソフトでするんですか?
Accessってよく知らないので全然ちがうこといってたらごめんなさい・・。
互換性を持たせるという意味も解釈によって様々ですが、
一方のソフトから一方のソフトを操作することは出来ません。(DXライブラリでは)
しかし着せ替えを行った組み合わせデータをデータファイルとして保存し、その保存されたファイルを別のソフトで読み込んで、登録するといった感じの互換性なら取れますよ。

つまり着せ替えのようなことをゲームで行って、着せ替えた組み合わせデータをファイルに保存。
データベースへの登録、更新はそのファイルのデータを読み取っておこなうと。
SQLとかじゃないんならデータベースの登録の仕方がよくわかりませんけど。

> あと、Cで作ったものをWeb公開って可能なんでしょうか?

もちろんできますよ。
HPをおつくりになったら私のHPからリンクも張ってあげますよ。
ただフラッシュじゃないなら、ウェブ上でソフトを操作すると言うことはできませんが、
ソフトをダウンロードしてもらって実行という形でいいのなら可能です。

> 質問ばかりですみません(><)

お気になさらずなんでも聞いてください^^

yuka

Re:ありがとうございます♪

#9

投稿記事 by yuka » 13年前

返信ありがとうございます♪
先生より丁寧に教えてもらって感謝感謝です。(^^)

最近ひざが痛くなってきました。老化現象でしょうか!?


>ん~と、どれをどの言語で作るんでしょうか?

全部C言語で作る場合です。

>Accessってよく知らないので全然ちがうこといってたらごめんなさい・・。

私もアクセス初心者なんで、なにができるかよく分からないんです…w
とりあえず、C言語でできるところまで作ってみようかなぁ。
と考え中です。
卒研的にはそれでも通ると思うんですけど、
先生的には、ただ遊ぶだけのものだとダメみたいなんですよね…

作りたい画面を画像にしてみたんですけど、みれますか?

バグ

Re:ありがとうございます♪

#10

投稿記事 by バグ » 13年前

私も詳しい方法は知らないのですが、AccessとCの連携は可能です。同じOffice関連のExcelやWordなんかとも可能なはずですよ。

ただし、相当、面倒だと聞いたことがありますが…

管理人

Re:ありがとうございます♪

#11

投稿記事 by 管理人 » 13年前

見れましたよ~^^
なるほど、こんな感じですね、出来ますよ♪
C言語の基本的な部分は大丈夫ですか?
if文、ループ文、スイッチ文に加えて、関数の値受け渡しくらいまで分かっていれば大丈夫かな?

これらがわかっているかちょっとテストです☆
以下のプログラムで表示される数字は
「どんな時のどんな値でしょうか?」


#include<stdio.h>

int calc(int a,int b){
  int c;
  c=a+b;
  return c;
}

void main(){
  int a,b,d,i;
  scanf("%d",&a);
  scanf("%d",&b);
  d=calc(a,b);
  if(d>10){
    for(i=0;i<3;i++)
      d+=d;
    printf("%d",d);
  }
}

このプログラムの意味がわかれば十分ソフトも作れると思いますよ^^
後は自分のガッツでDXライブラリに挑戦する意欲です!(といってもDXライブラリは超簡単です)

管理人

Re:ありがとうございます♪

#12

投稿記事 by 管理人 » 13年前

サンプルはちょっぴりひねってます(ちょっぴりね)。
あ、わかったと思ってもあれ?って思った答えが出ないかも^^

プログラム書いてるとこういう「あ!そっか!」的な要素がたくさんあること実感しますよ^^

Access詳しくないんですよね、ごめんなさい。
Accessについてはバグさんがきっと全面的にサポートしてくださると思います!w

yuka

Re:ありがとうございます♪

#13

投稿記事 by yuka » 13年前

AccessとC言語の連携可能なんですね!
でも、難しいのか…
とりあえず、両方の基本が分からないとダメですよね(^^;)
連携のことはさておき、両方の基礎を勉強していきたいと思います!

C言語の基本ですか…
すごく、微妙なところです。
関数が理解できなくて、プログラミングが嫌になったような記憶があります。w

if文とforループは分かるんですが、それ以外が微妙です。。

問題の答え、たぶん間違ってると思うんですが…
「2つの入力値の和が10より大きかった時の、入力値の和+1、入力値の和+2、入力値の和+3の3つの値」でしょうか?

バグ

Re:ありがとうございます♪

#14

投稿記事 by バグ » 13年前

惜しい!

『2つの入力値の和が10より大きかった時の…』まではOKです。

1:入力値の和 × 2

2:【1】の値 × 2

3:【2】の値 × 2

の3つが出力されるはずですよ(^-^)
どうして、こうなるかは、ゆっくりと順番にプログラムを追いかけてもらえば分かるかと思います。
たしかに、ちょっと、捻りが加えられていますね>>管理人さん

keichan

Re:ありがとうございます♪

#15

投稿記事 by keichan » 13年前

>1:入力値の和 × 2
>2:【1】の値 × 2
>3:【2】の値 × 2
>の3つが出力されるはずですよ(^-^)
残念。出力は一回だけです。

バグ

Re:はじめまして。

#16

投稿記事 by バグ » 13年前

うわ!本当だ!(;^_^A

forループの罠(って訳でもないだろうけど)にやられました…_| ̄|〇

ご指摘ありがとうございましたm(__)m

管理人

Re:はじめまして。

#17

投稿記事 by 管理人 » 13年前

みなさん違いますぞ!
夕ご飯外食中なのでしばしお考えあれ!
ヒントは単純にn倍ではないこと(^^)

yuka

Re:はじめまして。

#18

投稿記事 by yuka » 13年前

自分の間違いには気づきました!
新しい答えを考えて見ます。。

yuka

Re:はじめまして。

#19

投稿記事 by yuka » 13年前

バグさんの最初の答えしか、思いつきません…(^^;)
夕食が終わるのを待ちます。w

管理人

Re:はじめまして。

#20

投稿記事 by 管理人 » 13年前

では気になるその回答です!

関数受け渡しがわからなかったらちょっと難しかったですね。


#include<stdio.h>

//まずこの文章は入出力関数を利用可能にする構文。
//printf関数などはこの行を書いているから使えるわけですね。

int calc(int a,int b){

//この関数は受け取ったaとbの値を元に計算を行う関数。
//下のメイン関数から呼んでいます。
//関数の勉強してなかったらちょっとわからなかったでしょうか。
  int c;
  c=a+b;
  return c;
//cというint型変数を宣言し、cにメイン関数から受け取ったaとbの和を代入します。
//そしてその和であるcをリターン値として返します。
}


//ここからメイン関数
void main(){
  int a,b,d,i;
//scan関数ではこのように書くとキーボード入力の数値を
//aに格納する事が出来ます。
//キーボードで3とうってエンター押すとa=3;と同じ事になります。
  scanf("%d",&a);
  scanf("%d",&b);
//calc関数は先ほど作った関数です。
//aとbという値を渡します。で、返ってくる値はさっきのリターン値です。
//つまりa+bですね。
//dにaとbの和を代入します。
  d=calc(a,b);

//もしaとbの和が10以上だったら
  if(d>10){
//for文の下1行だけを3回繰り返す。
    for(i=0;i<3;i++)
      d+=d;
//ここが重要!d+=d;という処理が3回繰り返されるわけですが、
//仮に、始めのdは15だとしましょう。
//d+=d; は d=d+d; と同じ意味です。つまり自身を2倍した数を
//自身に格納します。つまり1回の処理で2倍になります。
//2倍になる処理が3回行われているので、「3倍」でなく「8倍」になります。
//ここがひっかけです。ここに気付けるかどうかがミソですね^^
//dが15だとすると15が
//1回目の処理→30に
//2回目の処理→30+30=60に
//3回目の処理→60+60=120になります。
//つまり、15が120つまり8倍になって出力されるわけです。

    printf("%d",d);
  }
}

回答は


「入力した2数の和が10より大きい時、その和が8倍になって表示される」

が正解でした^^

管理人

Re:はじめまして。

#21

投稿記事 by 管理人 » 13年前

バグさんのお答えは

for(i=0;i<3;i++){
  d+=d;
  printf("%d",d);
}

だったら正解ですね^^

yuka

Re:はじめまして。

#22

投稿記事 by yuka » 13年前

ん~。なぜ、3つ答えが出てこないのかがよく分かりません…(^^;)

ちょっと出かけなければいけないので、あとからじっくり読んでみようと思います!

管理人

Re:はじめまして。

#23

投稿記事 by 管理人 » 13年前

わかりました、いってらっしゃい^^

なぜループしないのかというと、{}括弧がないからです。

if(○○){
  処理1;
  処理2;
}



if(○○)
  処理1;
  処理2;

は意味が違います。

前者はif文の有効範囲は{括弧から}括弧まで、すなわち処理1,処理2ですが、

後者のif文の有効範囲はif文の次の行までです。すなわち処理1のみです。処理2はif文の有効範囲ではなくいつも実行されます。

括弧をかかなかったら有効範囲は次の行までになるんです。
正確に言えば次に「;」を書くまでなんです。
ですから次の2つは同じ意味です。

if(○○)
  処理1;

これと

if(○○) 処理1;

これです。
別に改行しなくても次に;を書くまでが有効範囲ですから
同じ行に書いてもいいわけですね。
for文でも同じことです。
次、この処理はどういう処理が行われるでしょうか?


for(i=0;i<3;i++){
  処理1;
  処理2;
}


for(i=0;i<3;i++)
  処理1;
処理2;


回答

処理1;

処理2;

処理1;

処理2;

処理1;

処理2;


処理1;

処理1;

処理1;

処理2;

です。
お判りいただけたでしょうか?
判らない事あれば、そのままにせずに何でも聞いてくださいよ^^

yuka

Re:はじめまして。

#24

投稿記事 by yuka » 13年前

こんばんわ♪

わかりました~(^_^)
そういえば、学校でもこんな感じの問題が出たような気がします!

C言語の関数、理解できなかったはずなのに、読んだら関数も理解できました~♪
ありがとうございます。

もっと早くこのサイトを知ってたら、授業についていけてたかも…w

コーディネートシステムのことなんですが、やっぱりFlashを使う方向に行きそうです。
Accessは使うなって言われました(^_^;)

なんか、データベースの環境も自分で作る事になりそうで怖いです。
まったく知識ないのに…(泣)

C言語も、もしかしたら別な形で使うかも知れないので、またのぞかせてもらいます♪

ホントに丁寧に教えて頂いて、ありがとうございました(^^)

管理人

Re:はじめまして。

#25

投稿記事 by 管理人 » 13年前

yukaさん、こんばんは^^
理解できなかった部分が理解できたようで、よかったです★

> コーディネートシステムのことなんですが、やっぱりFlashを使う方向に行きそうです。

そうですか、頑張ってくださいね^^
データベース構築はやはり専門分野ならSQLで作るんじゃないでしょうか?

難しそうな分野も毛嫌いせずに挑めば結構なんとかなるもんですよ♪
またいつでもお越し下さい^^
頑張ってくださいね~★

yuka

Re:はじめまして。

#26

投稿記事 by yuka » 13年前

こんばんわ(^^)
また来てしまいました。w

今日色々調べてみて、Flashとデータベースを連携させるには、
ActionScript+PHP+MySQLという構造で作るのがいいんじゃないかということが解りました~。

やっぱり、管理人さんのいう通り、SQLでした!

これから、そっちのほう勉強していきたいと思ってます。

ちゃんと作れたら報告しますね~♪(^▽^)

管理人

Re:はじめまして。

#27

投稿記事 by 管理人 » 13年前

yukaさん、こんばんは^^

うんうん、そういう感じで作りますね^^
ActionScriptやってる人多いですねぇ。
ウェブで気軽に動かせるから遊んでみる人も多いでしょうしフラッシュっていいですね^^

期限はいつなんですか?

yuka

Re:はじめまして。

#28

投稿記事 by yuka » 13年前

正式な期限はよく分からないんですけど、
先生的には11月中には作り終わっているのが理想みたいです。
そこから修正していくみたいな。

ホントなんもわからないんで、できるかものすごく不安です(^^;)

んでもって、先生となんか性格が合わないんで、精神的にも結構きつい!w

ってなわけで(?)、今日もこれから研究室に行ってきます!(^0^)

管理人

Re:はじめまして。

#29

投稿記事 by 管理人 » 13年前

え~11月ですか~?! 大丈夫ですか?!
毎日研究室で徹夜な勢いとか^^;
そういえば私の研究室も12月になるとそんな感じらしいですが・・う~こわ(_ _|||
先生と性格会わないとホント大変ですよ・・
判らない事聞けないし、ウザいと思ったらマジで先生の顔がうざくみえてくる・・
私は嫌いな先生をうまくスルーしていきてきましたw

研究頑張ってくださいね^^

閉鎖

“C言語何でも質問掲示板” へ戻る