ピラミットアート

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

ピラミットアート

#1

投稿記事 by ほかる » 15年前

ピラミットアートの数値を一つ入力し、その個数分の'*'を1辺とする
正方形、三角形、逆三角形、三角旗、ダイヤ型、六角形、星形、などの描画どう作るかわからないので教えてくれませんか。

ookami

Re:ピラミットアート

#2

投稿記事 by ookami » 15年前

ピラミットアートとは何ですか?
環境なども回答の参考になりますので書いてください。

あと、投稿に際しては、利用規約も参考にしてください。
http://dixq.net/board/board.html

ほかる

Re:ピラミットアート

#3

投稿記事 by ほかる » 15年前

C言語で
****
****
****
****
このようになるプログラムを入力したいのでがよくわからないので誰か教えてくれませんか。

ookami

Re:ピラミットアート

#4

投稿記事 by ookami » 15年前

その説明ではピラミットアートが何なのか分かりかねます。
上記の例では、「正方形、三角形、逆三角形、三角旗、ダイヤ型、六角形、星形」についても不明確です。

繰り返しますが、環境と利用規約、お願いします。

ほかる

C言語

#5

投稿記事 by ほかる » 15年前

プログラムで実行画面が
数字(2~9)を入力してください
****
****
****
****
このように正方形に出てくるプログラムをうちたいのですがどのようにうったらいいのが
全くわからないのでこれだげで誰かわかる人いますか。

ookami

Re:C言語

#6

投稿記事 by ookami » 15年前

C言語といってもいろいろあります。
OSも示されていません。
ご自分でどこまでやってみたのかも分かりません。

> プログラムで実行画面が
> 数字(2~9)を入力してください
> ****
> ****
> ****
> ****
> このように正方形に出てくるプログラムをうちたい

これだけなら、

printf("数字(2~9)を入力してください \n");
printf("****\n");
printf("****\n");
printf("****\n");
printf("****\n");

でもそのようには出ますが、それでよいのでしょうか?

通りすがり

Re:ピラミットアート

#7

投稿記事 by 通りすがり » 15年前

荒らしているのはスレ主ですか?

白い時空

Re:ピラミットアート

#8

投稿記事 by 白い時空 » 15年前

例えば、辺が4の四角形ならfor文を使って、
int i,j;

for(i=0;i<4;i++){
    for(j=0;j<4;j++){
        
        printf("*");
        
    }
    printf("\n");
}
このように書けます。
三角形なら、これを応用すればできます。
他の図形はよくわからないです。


ほかるさん、
初歩的な質問なら、特に環境を書く必要はないと思いますが、
自分がどれだけC言語の知識を持っているかは、書いておくべきです。

Dixq (管理人)

Re:ピラミットアート

#9

投稿記事 by Dixq (管理人) » 15年前

> ほかるさん

> 教えろ教えろ教え教えろ教えろ教えろ教えろ教えろ教えろ教えろ教えろ教えろ教えろしねしねしねしねしねしねしねしね

このような書き込みは規約違反ですので削除致しました。
この場は答えを得る場ではなく、学び方自体を学び、スキルアップする事を目的とした場ですので、
答えのみを求める質問も厳密にいえば規約違反となってしまいます。

規約を守った利用をお願いします。

回答者の皆様が規約やほかるさんの知識量を問われているのは、質問に正確に答えようとして下さっているからです。
「すぐに答えを教えてくれないのは意地悪だ」と感じられたのかもしれませんが、むしろその逆です。

規約は円滑に情報交換が出来るようにする為に作った物なので、これに沿って頂くのがお互いの為に最善の方法なのです。

ということで・・、
ほかるさんはどの程度C言語を理解されていますか?
例えばfor文で自分の期待する結果を得るための処理を書く事は出来ますか?

> 正方形、三角形、逆三角形、三角旗、ダイヤ型、六角形、星形

これ全部ですか?
星とかは難易度がかなり高いと思いますよ・・。

通りすがり

Re:ピラミットアート

#10

投稿記事 by 通りすがり » 15年前

アンケートのコメントにまで同じ質問がありますね。

Dixq (管理人)

Re:ピラミットアート

#11

投稿記事 by Dixq (管理人) » 15年前

う、アンケートの選択肢が酷い事になってますね・・。
使ってるコンパイラyoujo studyとか、来た経路がハイハイとかブランコとか・・。
修正しますm(_ _;)m

KEYONN_

Re:ピラミットアート

#12

投稿記事 by KEYONN_ » 15年前

スレ主さん、落ち着いてください。

僕も今でこそ、ゲームを作れるように(なったかな?)なりましたが、
C言語のCの字も知らなかった頃、1+1の計算もC言語で出来ませんでした。

高校の頃覚えたてのC言語(YaneuraoGameScript2000)でシューティングゲームらしいゲームを
初めて作って、とても(ゲーム)プログラミングって楽しいなあと思うようになりました。

そのゲームは、スコア計算がおかしくて、ボムを撃つと敵を蹴散らせて
スコアが天文学的に跳ね上がるのですが、
スコアの表示部分にキャラクターが描画されるという面白いバグがありました。

このように、プログラミングって、自分で考えて作っていくから本来面白いと思うんですよ。

しかし、学校のテストや宿題のように、強制された環境で勉強するからいけないと思うんです。

え~っと、何がいいたいのかよく分からなくなってきましたが、
結論として、プログラミングは、本来面白いものです。自分で考えられなかったら、そこまでの
途中までの考えをこのC言語何でも掲示板に書き込んでみたら良いと思います。

あと、とりあえず、ヒントを言います。
全角の空白(□←これじゃないけど、これとする)が先に表示して、その空白は段が下になるほど
小さくなっていきます。下の図だと、3,2,1,0の順です。
□□□■
□□■■■
□■■■■■
■■■■■■■
そして、ピラミッドは1,3,5,7の順で増えていきます。
高校の頃、BASICを教えてもらったアドバイスがあります。
「プログラミング環境がなくてもプログラムを考える事が出来る。
家にパソコンがないから、家で考えてきて、学校のパソコンに打ち込む」
です。つまり、紙に書いてみて、法則を計算で導きだしてください。
電卓も使ってみてください。(関数電卓のほうが便利です)

まあ、恥ずかしながら、僕もこの問題は最近出来るようになったのですが、
参考になりそうなリンクがあります。
http://okwave.jp/qa/q4035902.html
それでは、頑張ってください。

パコネコ

Re:ピラミットアート

#13

投稿記事 by パコネコ » 15年前

>正方形、三角形、逆三角形、三角旗、ダイヤ型、六角形、星形
これって三角形だけなら(逆含む)学校の勉強で作ったことがあるのですが…
具体的にどんな形かわかりますか?
たとえば
■□□
■■□
■■■
とか
>ピラミットアートの数値を一つ入力し、その個数分の'*'を1辺とする
□□■□□
□■■■□
■■■■■
辺は3と3と5なので
条件に合いませんね
でも
■■■■■
□■■■□
□□■□□
これを合わせると

□□■□□
□■■■□
■■■■■
□■■■□
□□■□□
1辺が3のダイヤですね
マークを書いてみてもらえませんか?
プログラムを考えるには何を作ろうとしているのか自分でわからなければなりませんから。

パコネコ

Re:ピラミットアート

#14

投稿記事 by パコネコ » 15年前

★星?☆
☆☆☆☆★☆☆☆☆
☆☆★★★★★☆☆
☆☆☆★★★☆☆☆
☆☆★★☆★★☆☆
うまく書けない…

バグ

Re:ピラミットアート

#15

投稿記事 by バグ » 15年前

星は…

☆☆☆☆☆★☆☆☆☆☆
☆☆☆☆★★★☆☆☆☆
★★★★★★★★★★★
☆★★★★★★★★★☆
☆★★★★★★★★★☆
★★★★★★★★★★★
☆☆☆☆★★★☆☆☆☆
☆☆☆☆☆★☆☆☆☆☆

こんなんじゃないかな?
この手の課題で出されるのは、いわゆる六芒星が多いですし…。

パコネコ

Re:ピラミットアート

#16

投稿記事 by パコネコ » 15年前

あ~六芒星でしたか…自分からやっといてなんですが☆★で書くと見ずらいですね。
次からは□■にします
これならfor文で作れそうですね
三角形と逆三角形を同時に書くだけですから
if文いるね。

Dixq (管理人)

Re:ピラミットアート

#17

投稿記事 by Dixq (管理人) » 15年前

>次からは□■にします 

"□"は" "の方が見やすいのでは?

     ★      
    ★★★     
★★★★★★★★★★★ 
 ★★★★★★★★★  
 ★★★★★★★★★  
★★★★★★★★★★★ 
    ★★★     
     ★     
 

ムンバ

Re:ピラミットアート

#18

投稿記事 by ムンバ » 15年前

こんばんはっ!

盛り上がってる?所、この様な事を言うのは大変恐縮なのですが・・・

ピラミット → ピラミッド

の間違いだと思うのですが、今更すみません。^^;
おやすみなさい~♪(∪。∪)。。。zzzZZ

---編集・追記---

↓参照ページ
http://dic.yahoo.co.jp/search?stype=0&e ... 3%E3%83%88
発音の仕方で、意味が違ってくるのかもしれませんし
もしかしたら、ピラミットアートというのが存在するのかもしれません。
勘違いでしたら、ごめんなさい。(謝

---さらに追記<(_ _)>---
ミット → 手袋
と言う意味でした。
「ピラ」を調べてみましたが、該当無しでした。^^ 画像

パコネコ

Re:ピラミットアート

#19

投稿記事 by パコネコ » 15年前

管理人さんの☆きれいにかけてますね。
ただ1辺の長さを整えないといけないんですよね。
だれかどういう形になるか書いてみてもらえませんか?
学校でも考えてたけど思いつきませんですた。
明日は検定試験なのに勉強に身が入りませんよ…

Dixq (管理人)

Re:ピラミットアート

#20

投稿記事 by Dixq (管理人) » 15年前

円に内接する三角形を60度ずらせば六芒星になると思います。

scanf("%d",&n);

for( y=-n/2; y<=n/2; y++ ){
for( x=-n/2; x<=n/2; x++ ){
if( 領域の内側 ){
printf("★");
} else {
printf(" ");
}
}
}

どれもこんな感じで出来そうですね。
領域判定式を変えてやればいいだけで。

五芒星であれば円の孤上、360/5°ずつ点を打ってやり、各2点を結ぶ直線の上か下かで領域を決めてやればよさそうですが、こちらはちょっとややこしそうですね。
考えれば何か簡単に領域を判定する式が見つかるのかもしれませんが。

組木紙織

Re:ピラミットアート

#21

投稿記事 by 組木紙織 » 15年前

Dixqさんの考え方に従ってコード書いてみました。
範囲の計算は回転が扱いやすいので複素数をつかっています。
全然上手にかけていませんが、眠いのでこれくらいで我慢してください。

#C99なら複素数計算も出来たはずですが、私の環境が対応してないのでパスします。

#include <iostream>
#include <complex>
#include <cmath>
const double pai =acos(0.0)*2;
bool check1(int i,int j)
{
std::complex<double> c(i,j);
bool retFlag = true;

if(retFlag)
{
retFlag =real(c)<5*(1.0/2);
}
if(retFlag)
{
std::complex<double> d=std::polar(cos(2*pai/3), sin(2*pai/3))*c;
retFlag =real(d)<5*(1.0/2);
}

if(retFlag)
{
std::complex<double >d=std::polar(cos(-2*pai/3), sin(-2*pai/3))*c;
retFlag =real(d)<5*(1.0/2);
}

return retFlag;
}
bool check2(int i,int j)
{
std::complex<double> c(i,j);
bool retFlag = true;

c =c*std::polar(cos(pai),sin(pai));
if(retFlag)
{
retFlag =real(c)<5*(1.0/2);
}
if(retFlag)
{
std::complex<double> d=std::polar(cos(2*pai/3), sin(2*pai/3))*c;
retFlag =real(d)<5*(1.0/2);
}

if(retFlag)
{
std::complex<double >d=std::polar(cos(-2*pai/3), sin(-2*pai/3))*c;
retFlag =real(d)<5*(1.0/2);
}

return retFlag;
}
int main()
{
for(int i=-10;i<=10;i++)
{
for(int j=-10;j<=10;j++){
char ch = check2(i,j)||check1(i,j)?'*':' _';
std::cout << ch;
}
std::cout << std::endl;
}

}

KEV

Re:ピラミットアート

#22

投稿記事 by KEV » 15年前

パコネコさんもおっしゃっているような、
三角形と逆三角形をずらして描画する、というスタンスで書いてみました。
関数 triangle() と triangle_reverse() に
書きたい三角形のサイズと上からの距離を入れてやれば指定部にフラグが立ちます。
後はまとめて出力するといった感じ。
if文の中身がえらいややこしくなってしまった…。

この方法だと「1辺の長さ」の定義によっては正解じゃないかもしれません。
まぁ参考までにってことで。

以下コード
----------------
#include "stdafx.h"

const int CanvasSize = 17;
int setFlag[CanvasSize][CanvasSize] = {0};  // size*sizeがキャンバスの大きさ

void triangle(int size, int height)
{
    if(size <= 0){
        return;
    }
    if((size/2)+height > CanvasSize){
        return;
    }

    int top = height;

    for(int i = top; i < size; ++i){
        for(int j = 0; j < size; ++j){
            if(j >= (i-top) && j < (size-i+top)){
                setFlag[j] = 1;
            }
            else{
                //setFlag[j] = 0;        // 塗りつぶすため0は入れない
            }
        }
    }

    return;
}

void triangle_reverse(int size, int height)
{
    if(size <= 0){
        return;
    }
    if((size/2)+height > CanvasSize){
        return;
    }

    int bottom = (size/2) - height;

    for(int i = (size-1-bottom); i >= 0; --i){
        for(int j = 0; j < size; ++j){
            if(j >= (size-i-1-bottom) && j <= (i+bottom)){
                setFlag[j] = 1;
            }
            else{
                //setFlag[j] = 0;        // 塗りつぶすため0は入れない
            }
        }
    }

    return;
}

int _tmain(int argc, _TCHAR* argv[/url])
{
    const int size = CanvasSize;

    // 1辺がsizeの三角形フラグを上から3の位置にセット
    triangle(size, 3);
    // 1辺がsizeの反転した三角形フラグを上から0の位置にセット
    triangle_reverse(size, 0);     //

    for(int i = 0; i < CanvasSize; ++i){
        for(int j = 0; j < CanvasSize; ++j){
            if(setFlag[j] == 1){
                printf("*");
            }
            else{
                printf("_");
            }
        }
        printf("\n");
    }

    getchar();

    return 0;
}

KEV

Re:ピラミットアート

#23

投稿記事 by KEV » 15年前

ちなみに出力結果はこんな感じです。
テキストで見ないと綺麗に見えないかも。
________*________
_______***_______
______*****______
*****************
_***************_
__*************__
__*************__
_***************_
*****************
______*****______
_______***_______
________*________
_________________
_________________
_________________
_________________
_________________

ココナ

Re:ピラミットアート

#24

投稿記事 by ココナ » 15年前

答えが教えてもらえなかったら死ねとか書き込みするような質問に答え教えてしまうと拍車がかかりませんかね。

KEV

Re:ピラミットアート

#25

投稿記事 by KEV » 15年前

最初から答えを教えようという気があったわけではなく、
スレッドの流れを見て気分転換に作ってみたいな、と思ったから書いてみました。
スレ主さんがまだここに来てくれるとはあまり思えないですし。

こういう問題は実装をあれこれ考えている時間が楽しいし有意義かなと思います。
何かの課題なのでしょうが、課題には向いていないんじゃないかなぁ。

Dixq (管理人)

Re:ピラミットアート

#26

投稿記事 by Dixq (管理人) » 15年前

おぅKEV!元気でやってますかいの。

等間隔で表示したいときはHTMLのpreタグで囲むと良いよb

H L

Re:ピラミットアート

#27

投稿記事 by H L » 15年前

ねぇ君、どうしてこんなところで学校の課題を質問してるのかな?

(不適切な表現が含まれていたので管理人が一部記事を削除致しました。
規約を守った利用をお願いいたします。)

パコネコ

Re:ピラミットアート

#28

投稿記事 by パコネコ » 15年前

KEVさんきれいにできてますね。
________*________
_______***_______
______*****______
*****************
_***************_
__*************__
__*************__
_***************_
*****************
______*****______
_______***_______
________*________
後はこれの横幅を3にすれば1辺が3の☆になりますね。
…ちょっと無理そうですね。
ここの主さんは宿題できたのでしょうか?
すごく難しいのできっと困っていたでしょうにのぞいているといいんですが…
=============
なんか崩れてる? 画像

パコネコ

Re:ピラミットアート

#29

投稿記事 by パコネコ » 15年前

改良してみました
______*______
_____***_____
____*****____
_***********_
__*********__
___*******___
___*******___
__*********__
_***********_
____*****____
_____***_____
______*______
微妙ですね
横4マスになってるかな?
でもこれ以上は…
===========
こっちもずれちゃう… 画像

パコネコ

Re:ピラミットアート

#30

投稿記事 by パコネコ » 15年前

再チャレンジ
ずれないように今度は自分で書く
     ■
    ■■■
   ■■■■■
■■■■■■■■■■■
 ■■■■■■■■■
  ■■■■■■■
  ■■■■■■■
 ■■■■■■■■■
■■■■■■■■■■■
   ■■■■■
    ■■■
     ■
完璧!(^_-)-☆
全部3マス!!!!

パコネコ

Re:ピラミットアート

#31

投稿記事 by パコネコ » 15年前

連続すいません
     ■
    ■■■
   ■■■■■
■■■■■■■■■■■
 ■■■■■■■■■
  ■■■■■■■
  ■■■■■■■
 ■■■■■■■■■
■■■■■■■■■■■
   ■■■■■
    ■■■
     ■
これを見本にするなら
行数 空欄 黒
1行目 5 1
2行目 4 3
3行目 3 5
4行目 0 11
5行目 1 9
6行目 2 7
7行目 2 7
8行目 1 9
9行目 0 11
10行目 3 5
11行目 4 3
12行目 5 1
という感じですね
見ての通り1~6行目までと12~7行目は同じです(さかさまだけど…
というわけでとりあえず1~6行目を作る必要があります
これだけでは規則性を導きズらいので4マスバージョンを書いてみます。

パコネコ

Re:ピラミットアート

#32

投稿記事 by パコネコ » 15年前

       ■
      ■■■
     ■■■■■
    ■■■■■■■
■■■■■■■■■■■■■■■
 ■■■■■■■■■■■■■
  ■■■■■■■■■■■
   ■■■■■■■■■
  ■■■■■■■■■■■
 ■■■■■■■■■■■■■
■■■■■■■■■■■■■■■
    ■■■■■■■
     ■■■■■
      ■■■
       ■
こんな感じですか?
真中は1つに変更しました
行数 空欄 黒
1  7  1
2  6  3
3  5  5
4  4  7
5  0  15
6  1  13
7  2  11
8  3  9
9  2  11
10 1  13
11 0  15
12 4  7
13 5  5
14 6  3
15 7  1
今回の場合8で反転してますね少し変更もあったので前のものも一緒に書きたいと思います。
行数 空欄 黒 空欄 黒
1  7  1 |5 1
2  6  3 |4 3
3  5  5 |3 5
4  4  7 |

5  0  15|0 11
6  1  13|1 9
7  2  11|

8  3  9 |2 7

9  2  11|
10 1  13|1 9
11 0  15|0 11

12 4  7 |
13 5  5 |3 5
14 6  3 |4 3
15 7  1 |5 1
線の右側は3マスのときです
3マスのときは縦に3行書いた後に空欄が0になりますね
そして4マスのときは4行の後0になります。
少しわかってきましたね。おそらく1行目の空欄の数もマスの2倍ー1だと思われます
これにより1辺の長さがNのとき
for(a=0;a<N;a++){
for(b=0;b<N*2-1;b++)
printf(" ");//空欄の描写
for(c=0;c<a*2+1;c++)
printf("*");//マークの描写
printf("\n");//次の行へ
}
これで1つ目です
書きズらいので一旦区切ります

パコネコ

Re:ピラミットアート

#33

投稿記事 by パコネコ » 15年前

次はさっきの後から真中までです。
5  0  15|0 11
6  1  13|1 9
7  2  11|
8  3  9 |2 7

0から始ってN回繰り返しているのがわかります
つまり空欄の数の式は0~N-1まで行うということになります
黒の数はN*4-1~(-2づつ減って)~N*4-1-2*(N-1)となり最後のを整理すると4N-2N-1+2=2N+1となります。
これで条件がそろいました
書いてみると…
for(a=0;a<N;a++){
for(b=0;b<a;b++)//空欄
printf(" ");
for(c=0;c<N*4-1-2*a;c++)
printf("*");
printf("\n");
}
aを使ったので最後の式は使いませんでした。残念ですがNを使うと値が変わってしまいますしね~
これで折り返しまでは書けるはずです…試してないですが…眠いので今日はこれで
============
間違えたので訂正 画像

パコネコ

Re:ピラミットアート

#34

投稿記事 by パコネコ » 15年前

きのう書いたものをプログラムで書いてみますね
#include<stado.h>
void main(void){
int a,b,c;
int n;

scanf("%d",&n);
//一つ目
for(a=0;a<n;a++){
for(b=0;b<n*2-1;b++)
printf(" ");//空欄の描写
for(c=0;c<a*2+1;c++)
printf("*");//マークの描写
printf("\n");//次の行へ
}
//2つ目
for(a=0;a<n;a++){
for(b=0;b<a;b++)//空欄
printf(" ");
for(c=0;c<n*4-1-2*a;c++)
printf("*");
printf("\n");
}
//ここまでで半分

パコネコ

Re:ピラミットアート

#35

投稿記事 by パコネコ » 15年前

なんかいっぱい書いてますが間違えてたみたいです
後で修復したのを書きます

パコネコ

Re:ピラミットアート

#36

投稿記事 by パコネコ » 15年前

#include<stdio.h>
void main(void){
int a,b,c;
int n;

scanf("%d",&n);
//一つ目
for(a=0;a<n;a++){
for(b=0;b<n*2-1-a;b++)
printf(" ");//空欄の描写
for(c=0;c<a*2+1;c++)
printf("*");//マークの描写
printf("\n");//次の行へ
}
//2つ目
for(a=0;a<n;a++){
for(b=0;b<a;b++)//空欄
printf(" ");
for(c=0;c<n*4-1-2*a;c++)
printf("*");
printf("\n");
}
}
ここで半分できました。
bのループの中に‐aを書き忘れていました。

パコネコ

Re:ピラミットアート

#37

投稿記事 by パコネコ » 15年前

出来上がりです
#include<stdio.h>
void main(void){
int a,b,c;
int n;

scanf("%d",&n);
//一つ目
for(a=0;a<n;a++){
for(b=0;b<n*2-1-a;b++)
printf(" ");//空欄の描写
for(c=0;c<a*2+1;c++)
printf("*");//マークの描写
printf("\n");//次の行へ
}
//2つ目
for(a=0;a<n;a++){
for(b=0;b<a;b++)//空欄
printf(" ");
for(c=0;c<n*4-1-2*a;c++)
printf("*");
printf("\n");
}
//3つ目
for(a=n-2;0<=a;a--){
for(b=a;0<b;b--)
printf(" ");
for(c=n*4-1-2*a;0<c;c--)
printf("*");
printf("\n");
}
//4つ目
for(a=n-1;0<=a;a--){
for(b=n*2-1-a;0<b;b--)
printf(" ");//空欄の描写
for(c=a*2+1;0<c;c--)
printf("*");//マークの描写
printf("\n");//次の行へ
}
}
いくつか試しましたが3や4や5はちゃんと1辺の長さが同じになりました。
1週間もかかってしまいましたがはかるさんできましたよー

パコネコ

Re:ピラミットアート

#38

投稿記事 by パコネコ » 15年前

少し改良です
do{
scanf("%d",&n);
}while(n<2);
初めの入力のときに上の状態にしないと変な形になることがあるので…
たとえば1や0なんて打ち込まれても困ります。1辺が1の☆なんて無理です。
マイナスとかもです。
まあ、1はともかく0以下は描写されないと思いますが…

シエル

Re:ピラミットアート

#39

投稿記事 by シエル » 15年前

このスレ立てた主さんは何処へ…

パコネコ

Re:ピラミットアート

#40

投稿記事 by パコネコ » 15年前

1週間ぐらい見かけてないな~

dic

Re:ピラミットアート

#41

投稿記事 by dic » 15年前

この人か
匿名許すとこうなるのよね

パコネコ

Re:ピラミットアート

#42

投稿記事 by パコネコ » 15年前

だれか匿名で書いてましたっけ?

ookami

Re:ピラミットアート

#43

投稿記事 by ookami » 15年前

すごい… 完成してる。

スレを見て分かる通り、私がほかるさんをキレさせてしまった張本人です。なんというか、すいませんでした。


それにしても、まさに「リーダー不在の開発」ですねw 私はこういうのをゲーム制作に応用できないかと… まぁ規模も違いますしね。

パコネコ

Re:ピラミットアート

#44

投稿記事 by パコネコ » 15年前

☆一つで大仕事な、きもしますけど…
一番時間かかったのって星の形の把握ですしね。
>こういうのをゲーム制作に応用…
こういうのとはみんなで考えることですか?
それともプログラム自体ですか?

こういうプログラムって楽しいですよね…考えるの

ookami

Re:ピラミットアート

#45

投稿記事 by ookami » 15年前

> みんなで考えることですか?それともプログラム自体ですか?

両方ですね。なんというか、言い出しっぺさえ居なくなっているのに、仕様が決まり、実装、コードレビューまで、何の取り決めもなく皆でできちゃうっていう。

そのノリで、不特定多数でゲームを作る…いやいやさすがに規模が違いすぎるから難しいか…など、その辺でモヨモヨしておりまして。

オープンソースでゲーム作れるのかっていう事ですね。

また煮詰まったらスレ立てさせてもらいますので、ご意見いただければと思っています。

パコネコ

Re:ピラミットアート

#46

投稿記事 by パコネコ » 15年前

楽しそうですね
オープンソースってなんだっけ?とか思っちゃうワイですが、
わかるものがあれば書き込みしますね。

パコネコ

Re:ピラミットアート

#47

投稿記事 by パコネコ » 15年前

> 正方形、三角形、逆三角形、三角旗、ダイヤ型、六角形、星形
まだ六角形と三角旗ができてなかったので考えようと思います。・・・実は暇なだけですけど…
まずは六角形から…
   ■■■
  ■■■■■
 ■■■■■■■
 ■■■■■■■
 ■■■■■■■
  ■■■■■
   ■■■
あれ?八角形?
もう一度
  ■
 ■■■
■■■■■
■■■■■
■■■■■
 ■■■
  ■
これなら六角形。(^^♪
また表にまとめたいと思います。
行 空 黒
1 2 1
2 1 3
3 0 5
4 0 5
5 0 5
6 1 3
7 2 1
結構簡単そう…

パコネコ

Re:ピラミットアート

#48

投稿記事 by パコネコ » 15年前

念のため4のときも…(さっきのは3のとき)
         空 黒
   ■     3 1
  ■■■    2 3
 ■■■■■   1 5
■■■■■■■  0 7
■■■■■■■  0 7
■■■■■■■  0 7
■■■■■■■  0 7
 ■■■■■   1 5
  ■■■    2 3
   ■     3 1

表を合わせると

行  空  黒
|3 |1
1 2|2 1|3
2 1|1 3|5
3 0|0 5|7
4 0|0 5|7
5 0|0 5|7
|0 |7
6 1|1 3|5
7 2|2 1|3
|3 |1
こんな感じです
空欄の一つ目は「n-1」のようです。
その後「n-1」回のループの後空欄が0になるのが、n回あります。
そして「n-1」回数値が増えていくループが行われて空欄はできます。多分
次に黒ですが最初は「1」で固定でしょう。
改行ごとに2づつ増えてますね。
これを「n-1」回行います。
次に空欄が「0」のとき「n*2-1」でいいと思います。
後は反対の作業なので…次でプログラム書きます

パコネコ

Re:ピラミットアート

#49

投稿記事 by パコネコ » 15年前

なんか怒られそうな気もしてきた…(横の名前のところがパコネコばっかりになってるし)
#include<stdio.h>
void main(void){
int a,b,c,n;
do{
scanf("%d",&n);
}while(n<2);
for(a=0;a<n-1;a++){
for(b=0;b<n-1-a;b++)
printf(" ");
for(c=0;c<1+a*2;c++)
printf("*");
printf("\n");
}
for(a=0;a<n;a++){
for(b=0;b<n*2-1;b++)
printf("*");
printf("\n");
}
for(a=1;a<n;a++){
for(b=0;b<a;b++)
printf(" ");
for(c=0;c<n*2-1-2*a;c++)
printf("*");
printf("\n");
}
}
これで3と4は確認しました。
後は三角旗で終わりですね。

パコネコ

Re:ピラミットアート

#50

投稿記事 by パコネコ » 15年前

ところで三角旗ってなんですか?

■■
■■■
■■■■
これですか?
それとも

■■
■■■
■■■■
■■■
■■

こんなの?
よくわかりませんだれかわかりますか?

組木紙織

Re:ピラミットアート

#51

投稿記事 by 組木紙織 » 15年前

下だと思います。

パコネコ

Re:ピラミットアート

#52

投稿記事 by パコネコ » 15年前

考えてみたら、下は1辺の大きさが変わらないの条件から外れてますね…
形状がわからないんじゃ作れない…だれかわかりますか?

閉鎖

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