トップページ⇒linux
1001コメント332KB

Linuxプログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin01/09/02 20:31ID:8eEfRqZ2
教えてよ。ゲームが作りたいんだ
040339402/04/24 17:46ID:Y8k1KMwG
>>397 dialogいいっスね.しかし開発言語がC++なんスよ.というか
C++の勉強のために実用を兼ねてコンソールのアプリを作ってみようと
思いまして.

>402 addstrって……たとえば,新規ウインドウが掛かる部分(の日本語
の2バイト目)を空白文字とかで潰しておくとか?

 イメージ的には「日本語編集可能なテキストエディタで,画面のまん
中に『保存しますか? [Y/n]』みたいなダイアログを出す」ということ
を考えています.つまりどの位置に日本語が来るかは不定,と.ついで
に保存する文字/改行コードを指定するラジオボタンとかもあるといい
かなー.

 あと,w3mでダイアログってありましたっけ?? [o]とかだと全画面
が切り替わってしまうので(実装的にはこのほうが楽)…….
040439402/04/24 18:00ID:Y8k1KMwG
あ,w3mのソース見てたらマウス右クリした時のメニューをmvaddstrで
しこしこ書いていた……(menu.c).no mouseでコンパイルしてたので
気付かなかった(汗).

これ参考にしてみます.
040540002/04/24 21:08ID:ujxu+X0b
>>401
たのむから、「レンダー拡張」とかいう「おれさま用語」をつかわんでくれ。
http://www.google.co.jp/search?q=%83%8C%83%93%83_%81%5B%8Ag%92%A3&hl=ja&lr=

どういう機能をいってるんだ?
0406login:Penguin02/04/24 21:53ID:cUx0CTWk
>>405
これじゃないの!?
http://www.google.co.jp/search?hl=ja&q=render%8Ag%92%A3&lr=
040740002/04/24 22:30ID:ci3ObMz/
>>406
あ、折れはてっきり399=401かと思ってた。

折れが「自前でどーにかしる!」っていったから、
「X Rendering Extentionでどーよ?」ってつっこんでくれたんだね。
さんくす。

# つーか、今までDRIと同じものかとおもってたよ... > RENDER拡張
# 逝ってくる...
040840002/04/24 23:27ID:jSngFYFK
反省により、リソース情報。
http://www.eax.com/render/

うーん、What is な文章は多いけど、HowToは少ないな...
0409暇潰し〜02/04/25 00:37ID:+hViL74o
/*
* 連打測定ソフト:レンダ君
* 使い方: command time
* 10秒毎にラップタイムを表示します
* -lcursesつきでコンパイルして下さい
*/

#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>
#include <curses.h>
#include <unistd.h>

static int wait_type(void);
int main(int ac, char **av)
{
int retval;
struct timeval now = {0, 0};
struct timeval start = {0, 0};
int c, i, t, rap;
int timelimit= atoi(av[1]);
int rapt=-1;

c=i=t=rap=0;
system("xset r off"); initscr(); cbreak(); noecho();
getch();
gettimeofday(&start, NULL);
mvprintw(1,0, "数:%d", ++i);
while (t != timelimit) {
retval = wait_type();
if(retval) { getch(); mvprintw(1,0, "数:%d", ++i); }
gettimeofday(&now, NULL);
c = (now.tv_usec >= start.tv_usec) ? 0 : -1;
t = now.tv_sec - start.tv_sec + c;
if (t % 10 == 0 && rapt != t && t) {
mvprintw(t/10+2, 0, "%d:rap %d", i, i-rap); rap=i; rapt=t;
}
mvprintw(0, 0, "time:%02d", t);
refresh();
}
if (t % 10 == 0 && rapt != t) mvprintw(t/10+2, 0, "%d:rap %d", i, i-rap);
mvprintw(0, 0, "time:%02d", t);
mvprintw(t/10+4, 0, "type 'q' to quit");
refresh();
while(getch() != 'q') ;
clear(); endwin(); system("xset r on"); exit(1);
}

static int wait_type(void)
{

fd_set rfds;
struct timeval tv = {0, 1000};

FD_ZERO (&rfds);
FD_SET (0, &rfds);
return select (1, &rfds, NULL, NULL, &tv);
}
0410いきなりsegfくらいましたが02/04/25 00:45ID:Lc1Q/pwH
うーん、argcくらい見てくれ....
(;-;)
でも、単純でもおもしろかったり(笑
0411login:Penguin02/04/25 13:09ID:N7r3K3Uc
これキーリピートきかないようにするにはどこいぢったらいいのだ?
0412login:Penguin02/04/25 14:05ID:1gvkucKX
キーリピートはsystem("xset r off");の所でoffにしてますよ.
最後system("xset r on"); で終了時にonになります.
これは指の筋肉増強の為に作りました.

昔のシュウォッチみたいなもんですね.
0413login:Penguin02/04/25 18:50ID:N7r3K3Uc
>>412
あれ?cygwinだからかな?キーリピートきいてるの。。
0414つっこんでみる02/04/27 11:13ID:HAxrAQOO
>>413
もしもし?ここはLinux板ですが?(わ
0415VackerVT_DEFAULT_TAG_STRING02/05/01 09:48ID:SXVBzGFf
きみたち。tclしているかい?
所で割き程、エロ画像を見るためのtclプログラム。なずけて
"エロエクスプローラ"と言うものを作って見た。
君達、tclもイケルゼ。

ここからダウンロードしたら、
http://cgi.din.or.jp/~behemoth/cgi-bin/img-box/img20020501094024.tar

名前をeexplorer.tar.gz にかえて、

tar -xvzf eexplorer.tar.gz

とやって、wish ero.tclだかんな。
0416login:Penguin02/05/01 10:07ID:KFBqztXK
へぇ、tclってこんな事できるんだ。
おもろいね。
0417Vacker02/05/02 05:49ID:t8zab81K
tclでテキストエヂターを作ってみようぜ。
まずは、wishと打って、tclのインタプリタを起動しよう。
そうしたら、

text .tx0

と入力してtextウイジットを作ろうぜ。
まあ、ウイジットって言うよりはWindows的に言えばオブジェクト
って呼んでもいいな。
オブジェクトが出来たら、wishが作ったウインドウに張り付け
鳴きゃ行けないよな。そこで、

pack .tx0

とするのさ。どうだい、簡単にエヂターが作れただろ?
0418Vacker02/05/02 05:50ID:t8zab81K
tclで作ったエヂターで日本語を入力するには、[Ctrl]+[¥]キー
を押せば入力できるはずさ。[Ctrl]+[o]でoffになる。
この辺りはmuleとおんなじさ。
0419login:Penguin02/05/28 13:25ID:9EabqzpY
request_irq() の第3引数ですが、
SA_SHIRQを指定した場合、同じIRQを共有するドライバは
全てSA_INTERRUPT付きか全てSA_INTERRUPT無しでないといかんと
ゆーよーな話を小耳に挟んだんですが、何かまずい事情があるんでしょうか?

メーカー製のドライバを入れたらエラーでまくりでまともに動作しなかったので
いろいろ調べてみたらSA_INTERRUPT付きと無しのドライバが混じって
同じIRQを共有していたんで。
混ぜたらrequest_irq()が失敗してもよさそうなもんなのに
しっかり成功してのも謎です(kernel 2.2.20)。
0420login:Penguin02/05/28 14:03ID:HcFeu/kp
>>419
俺もあまり詳しくはないけど、そのあたりは 2.0->2.2 で変わったyo。
SA_INTERRUPT はハンドラ走行中に割込み禁止するフラグだから、
IRQ の共有とは直接は関係ないんじゃないか?
arch/i386/kernel/irq.c あたりを読んでみればすっきりすると思われ。
0421login:Penguin02/06/01 19:01ID:GchLRA1j
初期文字列指定付きのreadline風行入力ライブラリってありますか?

たとえば「ファイル名を変更する」時に行入力を使う場合、
元のファイル名を指定できなければならないんですが……

できればLGPLがいいなぁ
0422login:Penguin02/06/01 20:01ID:3AZ8uYf0
tclでエディタできた。
0423login:Penguin02/06/01 22:54ID:1Mas3Mij
>>421
俺はformライブラリを使った。
多分もっと良い方法もありそうだが、
そこは俺がへたれという事で…
042442102/06/02 01:05ID:uSBPGDj6
>423 サンクスコ。初めて聞いた・・・と思ったらインストール済みだった(赤帽
0425login:Penguin02/06/03 20:26ID:pNev0Yh6
一つのソースでいろんなディストリに対応させたいんですが、どうやればいいんでしょうか?
言語は、Cです。できればLinuxだけではなくて、FreeBSDなどにも対応させたいのですが、
どうやったらいいでしょうか?
#ifdefでスイッチさせることはできるのでしょうか?
0426login:Penguin02/06/03 23:04ID:cBxac/cn
>>425
GNU のソース何でも良いから見てみ。

#ifdef 使わなくても、共通ライブラリだけで作れるコードなら
余裕でコンパイル可能。
0427login:Penguin02/06/17 02:03ID:4QW9IVdB
CプログラムからIFSを参照する方法ありますか。
getenvしようとしたけどNULL返ってくるんですけど。
0428login:Penguin02/06/20 01:23ID:CphBQpNt
age
0429login:Penguin02/06/20 01:31ID:PT5TL4d2
>>427
IFSは、普通は環境変数じゃなくてShell変数。
だから、あらかじめ明示的にexportしてやらないとダメじゃないかな?
043042702/06/20 01:41ID:CphBQpNt
そうですか。
shell変数は参照できないんですか…
ありがとうございました。
0431login:Penguin02/06/20 01:51ID:PT5TL4d2
>>430
shell変数は、shellが個別に内部で持っている変数。
環境変数とはちがうYo!。
どうしても必要なら、export IFSしてから自作プログラムを
execするshell scriptを使えばいいと思う。
0432111302/06/28 15:53ID:SCOUjbnn
簡単なプログラム知りたいです
0433login:Penguin02/06/28 22:14ID:l/6ZxngJ
>>432
ほれ、単純だけど、ちゃんと機能するcatだ。

#include <stdio.h>


void print_usage(char *me)
{
  fprintf(stderr,"Usage: %s filename\n",me);
  return;
}

int main(int argc, char **argv)
{
  FILE *fp;
  char buf[1024];
  int i;

  if(argc < 2){
      print_usage(argv[0]);
      exit(1);
  }
  for(i=1;i<argc;i++){
    fp = fopen(argv[i],"r");
    if(fp == NULL){
      perror(argv[i]);
      exit(1);
    }

    while(fgets(buf,1024,fp)){
      fputs(buf,stdout);
    }

    fclose(fp);
  }

  return 0;
}
0434login:Penguin02/06/29 11:55ID:wHqTASTH
休日だぞ。
ずれなくするオナジナイやるから、おまいらも、なにかソースうぷしる!!


#!/usr/bin/env ruby
require 'jcode'
$KODE='e'

while gets do
a = $_.gsub(" "," ")
puts a.gsub("\t","  ")
end
0435login:Penguin02/06/30 22:19ID:ljPApLVf
SDLついでにからage〜
0436login:Penguin02/07/01 08:34ID:Rzg2qQoA
int *ip = new int[rand()];
delete ip; //(;´Д`)ハァハァ
0437login:Penguin02/07/01 13:08ID:E87x/HNo
(´-`).。oO(rand()が0を返したらどうなるんだろう?)
0438login:Penguin02/07/01 15:45ID:PPG3DaVN
つーか、配列の解放はdeleteでなくてdelete []だろ。
0439login:Penguin02/07/01 19:36ID:bBNoWQJC
int *ip = new int(0);
delete[] ip; //(;´Д`)ハァハァ
0440login:Penguin02/07/03 22:09ID:sv4PfTDc
422とか485ってドライバある?
0441login:Penguin02/07/03 23:31ID:8md+2mdC
while(1){
 int *ip = new int(0);
 delete[] ip;
}//(;´Д`)ハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァハァ
0442login:Penguin02/07/04 01:20ID:gZhxNmSF
do {
cout<<"Jesu joy of man's desire(・∀・)"<<endl;
} while (false);
0443login:Penguin02/07/04 02:48ID:YpwuZxrO
perl+cursesでプログラムを書きたいと思ったのですが PG板でもらったソースを実行しようとしたら Curses.pmが無いと言われたのでそのまま落として 先程のを実行したところ、エラーがいっぱい出ました。 .pmはちゃんとインストールしなければいけないのでしょうか?
0444login:Penguin02/07/05 12:25ID:19Dq7F42
>>440
ふつーのserialじゃだめなのか?
0445login:Penguin02/07/05 21:03ID:AzdKDIXl
おまいら、ソースを書け、そしてageるのじゃ!

>>443
どーゆーエラーが出たのか書かんと...
0446login:Penguin02/07/05 21:26ID:WoeIQI0f
>>443
インストールしないと動かないだろ。
たまに動くモジュールもあるけど。
0447OpenGLのテスト02/07/05 21:44ID:bgFWMrqb
#include <GL/glut.h>
#include <sys/time.h>
#include <stdlib.h>

#define QX 0.0 /* 球の初期位置のx座標値 */
#define QY 1.5 /* 球の初期位置のy座標値 */
#define QZ (-5.0) /* 球の初期位置のz座標値 */
#define G (-9.8) /* 重力加速度       */
#define V 25.0 /* 初速度         */
#define TSTEP 0.01 /* フレームごとの時間   */

struct timeval tv_now;
struct timeval tv_start; /* 開始時間 */
int nstep=0;


/*
* 地面を描く
*/
void myGround(double height)
{
static GLfloat ground[][4] = {
{ 0.6, 0.6, 0.6, 1.0 },



0448OpenGLのテスト02/07/05 21:45ID:bgFWMrqb
{ 0.3, 0.3, 0.3, 1.0 }
};

int i, j;

glBegin(GL_QUADS);
glNormal3d(0.0, 1.0, 0.0); /* 法線ベクトルの設定 */
/* 10x10 の床 */
for (j = -5; j < 5; j++) {
for (i = -5; i < 5; i++) {
glMaterialfv(GL_FRONT, GL_DIFFUSE, ground[(i + j) & 1]);
/* タイル描画(1つ分) */
glVertex3d((GLdouble)i, height, (GLdouble)j);
glVertex3d((GLdouble)i, height, (GLdouble)(j + 1));
glVertex3d((GLdouble)(i + 1), height, (GLdouble)(j + 1));
glVertex3d((GLdouble)(i + 1), height, (GLdouble)j);
}
}
glEnd();
}

/*
* 画面表示
0449OpenGLのテスト02/07/05 21:46ID:bgFWMrqb
*/
void display(void)
{
static GLfloat white[] = { 0.8, 0.8, 0.8, 1.0 }; /* 球の色 */
static GLfloat lightpos[] = { 3.0, 4.0, 5.0, 1.0 }; /* 光源の位置 */
static double px = QX, py = QY, pz = QZ; /* 球の位置 */


/* 画面クリア */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

/* モデルビュー変換行列の初期化 */
glLoadIdentity();

/* 光源の位置を設定 */
glLightfv(GL_LIGHT0, GL_POSITION, lightpos);

/* 視点の移動(物体の方を奥に移す)*/
glTranslated(0.0, -QY, -10.0);

/* シーンの描画 */
myGround(0.0); /* 高さは0 */
0450OpenGLのテスト02/07/05 21:47ID:bgFWMrqb

glTranslated(px, py, pz); /* px, py, pz に移動 */
glMaterialfv(GL_FRONT, GL_DIFFUSE, white);/* 拡散反射光強度の設定 */
glutSolidSphere(0.1, 16, 8); /* 球体 */

glutSwapBuffers();
pz = QZ + V*nstep*TSTEP;

printf("%f\n", pz);

}

void resize(int w, int h)
{
/* ウィンドウ全体をビューポートにする */
glViewport(0, 0, w, h);

/* 透視変換行列の指定 */
glMatrixMode(GL_PROJECTION);

/* 透視変換行列の初期化 */
glLoadIdentity();
gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0);
0451OpenGLのテスト02/07/05 21:47ID:bgFWMrqb

/* モデルビュー変換行列の指定 */
glMatrixMode(GL_MODELVIEW);
}

void mouse(int button, int state, int x, int y)
{
switch (button) {
case GLUT_LEFT_BUTTON:
if (state == GLUT_UP) {
/* 時刻調査 */
for (;;) {
gettimeofday(&tv_now, NULL);
if ((tv_now.tv_sec - tv_start.tv_sec)
+ (tv_now.tv_usec - tv_start.tv_usec)/1000000
>nstep*TSTEP) {
display();
nstep++;
}
if (nstep == 500){nstep=0;break;}
}
}
break;
0452OpenGLのテスト02/07/05 21:48ID:bgFWMrqb
default:
break;
}
}

void keyboard(unsigned char key, int x, int y)
{
/* ESC か q をタイプしたら終了 */
if (key == '\033' || key == 'q') {
exit(0);
}
}

void init(void)
{
/* 初期設定 */
glClearColor(1.0, 1.0, 1.0, 0.0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
}

0453OpenGLのテスト02/07/05 21:48ID:bgFWMrqb

int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutReshapeFunc(resize);
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);
init();
glutMainLoop();
return 0;
}
0454OpenGoLua02/07/05 21:51ID:bgFWMrqb
無駄に長いな、鬱。。

コンパイルは
gcc -o gltest gltest.c -L/usr/X11R6/lib -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm
などとやって下さい。
0455login:Penguin02/07/05 22:48ID:dC/skGRi
どうでもいいけど、海外のMLの過去ログってけっこうわかりやすいから英語の勉強になるよね。
0456login:Penguin02/07/05 23:18ID:7jOR47Ou
C言語の入門書を一通り終え、次はどの本で勉強しようか迷っています。
検索したところ、下の 3種類の本が見つかったのですが、
もっておられる方、書評をお聞かせいただけないでしょうか。
プログラミング Linux(アスキー)
http://www.linux.or.jp/bookreview/ProgrammingLinux.html
Linux プログラミング 例題で学ぶUNIXプログラミング環境のすべて(ソフトバンク)
http://www.linux.or.jp/bookreview/LinuxProgramming.html
例題で学ぶLinuxプログラミング GCCからRPMまでオープンソース・アプリケーション技術(ピアソン・エデュケーション)
http://www.ne.jp/asahi/yokohama/juk/LPBE/

上2つのブックレビューを見た感じでは、ソフトバンクの方が良いように思ったのですが…
できればなるべく易しいものが良いかな、と思っています。
0457login:Penguin02/07/05 23:31ID:/Fjz3ZWL
the programming language C++ third edition なんかいいでっせ。
0458login:Penguin02/07/05 23:54ID:1Jx6LzB6
>>456
とりあえず、ソフトバンクので困らないと思われ。
むずかしさは...まぁ、上二つはあまり変わらん。下は持っていない。
でも、ピアソンのが新しいっちゃ新しいよね。
あとは、ぼんやりとでもいいから、何か作りたいものをイメージ
しながら読むといいと思う。
「これはあんなとこにつかえそぉ」とか、具体的に読み進められる。

>>454
お疲れ〜。でも、うちにはOpenGL環境ないんです(w
0459login:Penguin02/07/05 23:56ID:qXJ160Nx
>>456
本もいいけど、他人の書いたコードを読むのも勉強になるよ。
0460login:Penguin02/07/06 00:20ID:LbUe5eHh
>>459
御意,,と、口ばかりじゃアレなんで、454のソース読んでみたよ。
で、気づいたこと。
mouse()の中でfor(;;){ if(){break;}}使ってるけど、
do{}while();の方が、意味的にもいいよね。
あと、そもそもこれちゃんと動かんだろ?
tv_startは初期化されていないし、
(tv_now.tv_usec - tv_start.tv_usec)/1000000とかやっても、
0しか戻らないし...
0461login:Penguin02/07/06 00:22ID:LbUe5eHh
そもそも、(おそらくは)マウスイベントのハンドリングの為だけ
とはいえ、for(;;)のビジーループが存在するだけで許せんぞ。
0462login:Penguin02/07/06 02:38ID:xjNRRpHF
>>461
あぁ、そこらへんは適当だよ。とりあえず動くという程度のプログラムだから。
白黒のタイルに浮かんでるボールがこっちに向かってくるプログラムだよ。

0463login:Penguin02/07/06 03:02ID:LbUe5eHh
> あぁ、そこらへんは適当だよ。
つーか、適当に書くとビジーループになるのが信じられん。
適当に書くときはusleep()使えよ。数倍楽だろ。
0464login:Penguin02/07/06 04:00ID:llRDQuK0
>>444
4芯のなら大丈夫だと思うけど、2芯のだとダメくない?
0465login:Penguin02/07/06 16:12ID:XQZfZLNG
コード書く人はコンソールなのかな?
0466login:Penguin02/07/06 19:22ID:llRDQuK0
>>465
Samba経由で秀丸です
0467login:Penguin02/07/08 03:53ID:r8k7FnUx
std::time_t t;
std::time(&t);
cout<<"date: "<<std::ctime(&t)<<endl;
0468login:Penguin02/07/09 07:44ID:dI8y656h
僕はviだなぁ。(と言うよりviしか使えませぬ)
はぁ、鬱。
0469login:Penguin02/07/09 08:14ID:VxwP6xXl
>>466
ふつーメモ帳だ
0470login:Penguin02/07/10 23:09ID:Umbonmar
http://pc.2ch.net/test/read.cgi/linux/1025048946/96-103

こういう風に、物理シミュレーションとして
速度 += 加速度 * 時間
ってやっちゃうと、誤差が蓄積していく。

だから、あらかじめ毎回全エネルギーを計算しておいて、
毎回 全エネルギーから位置エネルギーをさっぴいて、
運動エネルギーを出して現在速度を算出、
また、位置エネルギから加速度を計算して、現在速度に
加速度*ステップ時間を加え、次の位置を計算して、
次回フレームの位置をだす。

で、新しい位置での位置エネルギーを計算して、全エネルギーから
さっぴいて運動エネルギーを...

ってやれば、一応発散も収束もしない定常的な運動が実現できるはず。
0471login:Penguin02/07/10 23:24ID:wVIFNohY
perlってすごいの?
0472login:Penguin02/07/10 23:30ID:Umbonmar
すごいよ。
0473login:Penguin02/07/10 23:39ID:RWp71i45
>>471
こないだあるツールを最初シェルスクリプトで書いたですよ。
sed を百回くらい呼び出すお化けになったですよ。死ぬ程遅い。
次に妥協して bash 固有機能を使ったら 10 倍くらい改善した。
それを perl で書き直したら更に 5 倍速くなったよ。
しかも断然書きやすい。すごくよみにくいけど。
0474login:Penguin02/07/10 23:48ID:Umbonmar
>>470 の続き
ちなみに、
http://pc.2ch.net/test/read.cgi/linux/1025048946/96-103
だと、常に重力加速度がモロに働いている状況だから、
運動エネルギーはずーっと増大する一方です。
/* 根本的に、力と加速度/速度の関係がおかしぃように見える... */

0475ばねばね02/07/11 03:45ID:bhGnPQRz
>>470
エネルギーが保存されてる状態ならそれで行けるかな。
エネルギーが時間の関数でエネルギー自体を差分で求めていく事になると
やっぱり速度を求める時に誤差が出そうな気が。。
まだ組んだ訳では無いので何とも言えませんが。

さっき改めてsodaplayやってみたら、
○ばねの振動は減衰する(現実に則してる)
○地面のはねかえり係数は1未満(上に同じ)
○筋肉の存在(減衰の無いばね?)(生物チックな動きの元)

と言うことが分かりました。ますますややこしい。。
とりあえず簡単な質点の運動から考えてみます。(ばね系はちょっと後回しで)
0476ばねばね02/07/12 03:22ID:pljjbWtA
void display(void)
{
static struct timeval oldt = {-1, -1}; /* old time */
static struct timeval nowt; /* new time */
int i;

glClear(GL_COLOR_BUFFER_BIT);
glColor3d(0.0, 0.0, 1.0);
switch (g_Mode.mode) { /* ステータス表示 */
case SIMULATE: sd_mvAddStr(5, 30, "mode:SIMULATE"); break;
case CONSTRUCT: sd_mvAddStr(5, 30, "mode:CONSTRUCT"); break;
default: sd_mvAddStr(5, 30, "mode:"); break;
}
if (g_Mode.mode == SIMULATE) { /* シミュレーションモード */
if (oldt.tv_sec == -1) {
gettimeofday(&oldt, NULL);
for (i=0; i< g_nmass; i++)
g_Masslist[i].a[1] = -G;
} else {
gettimeofday(&nowt, NULL);
if (sub_timeval(nowt, oldt) > STEP_TIME) {
for (i=0; i< g_nmass; i++) {
if (g_Masslist[i].x[1]<0 && g_Masslist[i].v[1]<0)
g_Masslist[i].v[1] = -g_Masslist[i].v[1]*e;
else {
g_Masslist[i].x[1] += g_Masslist[i].v[1]*STEP_TIME;
g_Masslist[i].v[1] += g_Masslist[i].a[1]*STEP_TIME;
}
}
oldt=nowt;
}
}
}
if (g_Mode.mode == CONSTRUCT) oldt.tv_sec = -1; /* initialize old time */
if (g_nmass > 1) { /* 記録したデータで線を描く */
glColor3d(0.0, 0.0, 0.0);
for (i=0; i< g_nmass; i++)
sd_mvDispTrianglePoint(g_Masslist[i].x[0], g_Masslist[i].x[1]);
glBegin(GL_LINES);
glEnd();
}
glutSwapBuffers();
}

0477ばねばね02/07/12 03:24ID:pljjbWtA
質点の重力のみがかかる時のシミュはでけた気がする。。

次は筋肉でもやろ。
0478login:Penguin02/07/12 12:03ID:8M4txI+9
なんでそんなに移植性のない方法を
0479login:Penguin02/07/13 01:33ID:V6lw6K5b
みなさん、ioctlって何て呼んでます?
1) アイ・オー・コントロール
2) アイ・オー・コトル
3) アイ・オー・コトロ
4) アイ・オー・クツル
0480login:Penguin02/07/13 01:36ID:ZQfsDMJ4
半泣き顔こんとるろーる
0481login:Penguin02/07/13 03:49ID:Y17UaqG9
perl/cursesやりたいな
0482ちょっちやってみた02/07/13 04:16ID:4FQ5CT5Q
perl -e 'use Curses; initscr();cbreak();noecho();refresh();getch();clear();endwin();endwin();'

う〜ん。Cじゃ駄目?
0483login:Penguin02/07/13 04:17ID:4FQ5CT5Q
endwin();が二つも(w
0484login:Penguin02/07/13 04:49ID:Y17UaqG9
モジュール自分でコンパイルしなきゃいけないんだってね。
昨日買った独習Perlはあんまり読んでないです。
0485login:Penguin02/07/13 05:13ID:Y17UaqG9
コンパイルするわけねえよな
0486login:Penguin02/07/13 07:05ID:4FQ5CT5Q
マジレス、プログラムに集中したいならdebianとかvineみたいに
プログラムのインストが楽なのが良いよ。いちいちコンパイルするの
面倒でしょ?
0487login:Penguin02/07/13 12:36ID:y/FpJvxQ
↑?
0488login:Penguin02/07/13 13:02ID:VEG3EIVt
>>487
ほっとけ。多分486はプログラム言語・環境を自分でインストールする必要が
ないディストリビューションのことを言ってるんだろ。
コンパイルしないですむプログラムってPerlとかsed,awkをちょろって使うことを
想像するよな。普通ソース書いて、コンパイルしてプログラムを作って、実行する
のが当たり前なんだが。
そういうことも書けない 486 はDQNってことで。
0489login:Penguin02/07/13 16:18ID:JPP/8GD4
>>486 LaTeX とかだと apt とかでサラーっとインストールも魅力的だけどね.
486系がDQN?(´・ω・`)
0490login:Penguin02/07/13 18:46ID:Ml46bmEz
みんな、WinとLinuxとで、プログラムをどこまで共通化してます?
環境依存部分とOS依存部分とマシン依存部分
どこまでどうやってわけてるのか興味津々。
DelphiとKylixだとそのあたりで手を抜けそうだけど
ふつーのCだと線引きが面倒っつーか、いまいち
知識と経験が足りなくって・・・。
0491login:Penguin02/07/13 19:22ID:iuPaBagY
i>>486?
intelはいや〜。
0492login:Penguin02/07/13 22:39ID:KT9e5gI7
いまさらという感じでXlibの質問で何だが
Xで画像を表示するときはXPutImage(XShmPutImage)を
つかうと思う(ここですでに間違っていたりして...)

んで、そのためにはXImage構造体に表示する内容を格納しなきゃ
いけないわけだけど、これをXPutPixelなんかでやっていたらむちゃ
時間かかる。
そこでXImage構造体に直接値を代入しているわけだけど、そんなこと
すると、Xの色数とか、ビットエンディアンなんかに気をつかわないと
いけない...

なんか、正攻法で速い方法って、ないっすか?
(用途としては、メモリ上の画像を表示するとか。さらにそれを
なめらかにフェードイン、フェードアウトするとか。)
さらにいうと、フェードイン、フェードアウトするためにXAllocColorをすると
これもしゃれにならないくらい時間がかかる(256色で0.5秒くらい)
0493login:Penguin02/07/14 01:12ID:utN6QrPL
ちょっと待って。
Linux使いなんだから当然プログラミングしてるよね??
0494login:Penguin02/07/14 01:53ID:0gmQZYJ9
このスレを読んでいる→プログラミングしている人が多い は
いえるかもしれんが

Linux使い→当然プログラミングしている は
成り立たないと思われ。
0495login:Penguin02/07/14 02:48ID:R8XUXxiq
>>492
XF86のDGA extentionとか、そっち方面かな?
Xlibいじるのが目的じゃなくて、何も考えずに
フェードイン/アウトとかやりたいっていうのなら、
SDLあたり使う方が楽だよ。多分。
049650002/07/14 03:55ID:0+95ASAZ
shもプログラミングのうちに入りますよね?

0497login:Penguin02/07/14 09:20ID:SNv7+3Vh
>>496
もちろん
049849202/07/14 09:27ID:AysUSjKQ
>>495
それも考えたが
XFree86でないXサーバとかでも使えるように、とか考え出すと
ふつうのXだけで動くようには、しておきたい...
(ゲームとかでなく、凝った画面表示はおまけのプログラムなので)

SDLって、どれくらい使われているのかな
(Linux以外を含めて)
0499login:Penguin02/07/14 09:43ID:E/smBifZ
>>490
Qtはいかが?
0500login:Penguin02/07/14 09:49ID:w9MjeXdq
このスレ寿命が長いね。あと2ヶ月で1年だ!!
0501login:Penguin02/07/14 10:34ID:Ls0TW+0x
gccのC++実装でどうですか?
3.xとかはまともに使えるのかな。
インストール出来なかったんでほっぽってありますが。

2.95とかでstringのat()使おうとしたら、そんな関数ねぇとか言われた
0502login:Penguin02/07/14 12:58ID:BTJFLzrS
>>498
よくわかんないけど、Imagemagickとかの実装が参考にならないかな?
# あれも遅いけど、内部データ形式が富豪すぎるせいもあるし...
050349302/07/14 15:20ID:l0t3RQmI
>>494-500
そうなのか〜
テッキリこの板の住人は皆ハイパープログラマだと思ってYO
■ このスレッドは過去ログ倉庫に格納されています