プログラミングのギモン その80

        Q小型ノートPC CPU性能について現在10型〜12型くらいの小型ノートの購入を検討しています。小型ノートなので、ある程度の性能以上は求めないつもりですが、どうせ買うなら良いほうがいいと思い、質問させていただいた次第です。以下のCPUでどれが一番よいのでしょうか↓インテル Atom N570 デュアルコア(擬似4コア) 1.66 GHzAMD デュアルコア・プロセッサ C60 + AMD Radeon HD 6290 1 GHzインテル Atom プロセッサー N2800 1.86 GHzあとwindows7 でプログラミングの練習する場合、Starter (32bit) だと Home Premium(64bit) と比べて影響がでたりしますか?(C言語やJavaなどの練習用のソフトのインストールに問題が出るなど)よろしくお願いいたします。
        BA1つの目安ですが、CPU Benchmarkのスコアで比較すると、 N2800 > N570 > C60 になります。また、32bitOS上では64bitのプログラムは動きません。ご参考http://www.cpubenchmark.net/cpu.php?cpu=Intel+Atom+N570+%40+1.66GHzhttp://www.cpubenchmark.net/cpu.php?cpu=AMD+C-60http://www.cpubenchmark.net/cpu.php?cpu=Intel+Atom+N2800+%40+1.86GHz
        QjavaのSwingを使ったGUIプログラミングに関してjava初心者です。ローカルのjavaアプリで、ボタンを押すたびに線が追加されていくプログラムを作っているのですが、うまくいきません。先に描いた線が消えてしまいますrepaint()が呼び出されたときに、update()によってクリアされているのでしょうか?文字数制限により、関係がないと思われる個所は、省いておりますがどなたか、ご教授願います。class GFrame extends JFrame{ private JButton b1; private JpanelDraw dp; public GFrame(String title){ b1 = new JButton("コマ送り"); JPanel bp = new JPanel(); bp.add(b1); dp = new JpanelDraw(); b1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ dp.drawMode = true; dp.repaint(); } }); } class JpanelDraw extends JComponent{ private boolean drawMode = false; ArrayList<Integer> x= new ArrayList<Integer>(); ArrayList<Integer> y= new ArrayList<Integer>(); ArrayList<Integer> stroke= new ArrayList<Integer>(); int pt = 0; JpanelDraw(){ setBackground(Color.WHITE); x.add(0,new Integer(0)); x.add(1,new Integer(50)); x.add(2,new Integer(100)); x.add(3,new Integer(150)); x.add(4,new Integer(200)); y.add(0,new Integer(0)); y.add(1,new Integer(100)); y.add(2,new Integer(50)); y.add(3,new Integer(0)); y.add(4,new Integer(250)); stroke.add(0,new Integer(0)); stroke.add(1,new Integer(1)); stroke.add(2,new Integer(2)); stroke.add(3,new Integer(3)); } public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.setPaint(Color.WHITE); g2.clearRect(0, 0, 500, 500); g2.setPaint(Color.BLACK); if(drawMode==true){ for(int j=stroke.get(pt); j < stroke.get(pt+1); j++){ g2.draw(new Line2D.Double(x.get(j), y.get(j), x.get(j+1), y.get(j+1))); } pt++; } } }
        BA分かりにくいプログラムだったので、改造しました。 コピペ可。(eclipse なら、コピペ -> 全選択して、Ctrl+Shift+F でオートフォーマットできます。)改造点:・ x, y に分けてたのを Point へ・ ArrayList -> LinkedList、宣言を List へ・extends JComponent -> extends JPanel にして、背景を super.paintComponent で塗れるように・文字数制限のためかもしれないけど、変数名わかりにくかったからちょっと変えた・線描くだけなら Graphics2D いらん・ランダムで線を描いていくようにした・意味なさそうな drawMode を消去注) ちなみに、if ( drawMode == true ) なんていう書き方はダメです。 if ( drawMode ) にしてください。--class DrawLine extends JFrame { private JButton button; private DrawPanel drawPanel; public static void main(String[] args) { JFrame frame = new DrawLine("title"); frame.setVisible(true); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setSize(700,700); } public DrawLine(String title) { button = new JButton("コマ送り"); final JPanel basePanel = new JPanel(); drawPanel = new DrawPanel(); drawPanel.setPreferredSize(new Dimension(600, 600)); drawPanel.setBackground(Color.WHITE); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { drawPanel.addPoint( (int) (Math.random() * 600) , (int) (Math.random() * 600) ); drawPanel.repaint(); } }); basePanel.setLayout(new FlowLayout()); basePanel.add(button); basePanel.add(drawPanel); getContentPane().add(basePanel); } class DrawPanel extends JPanel { List<Point> pts = new LinkedList<Point>(); DrawPanel() { pts.add(new Point(0,0)); setBackground(Color.WHITE); } public void addPoint(int x, int y) { pts.add( new Point(x,y) ); } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLACK); Point pre = null; for( Point cur : pts ) { if ( pre != null) { g.drawLine( pre.x, pre.y , cur.x , cur.y); } pre = cur; } } }}
        Q最も潰しが効くプログラミング技術プログラマを目指して就活中の学生ですが質問です。一口にプログラミングと言っても組み込み、web系、アプリと千差万別ですが、「これを経験しとけば、多くの場所で必要とされる」と言える技術はどれでしょうか?個人的には、サーバー系が最も潰しが効いて、ゲームプログラミングは潰しが効き辛いイメージですが、この認識からしてまだ自信が足りません。まだまだ無知故に穴だからの知識と認識ですが、色々とご教授お願いします。
        BAサーバー系でもwebは、プログラマの使い捨て状態です。専門学校や研修などで、最低限の知識しかない即席プログラマを大量生産し、格安で酷使しては、使い捨てし続けているのが現実です。ゲーム系は、プログラミングの中でも極めて難度の高い部類です。業務システム開発をしている現役プログラマに、ファミコン初期のようなシンプルなゲームを作れと言っても、過半数どころか8割以上は全くできず、お手上げだと思います。もし現代のゲーム会社で通用する技術があるなら、他分野に言っても、技術的には十分すぎるほど通用します。個人的には、分野を問わずC言語をある程度できる人は、どこに行っても通用すると感じます。C言語がある程度わかっていれば、オブジェクト指向だとか、イベント駆動も、内部的にどのように実装されているのかおおよそ推測ができ、短時間で理解可能です。それらはC言語では面倒だった事を、簡易化しただけのモノですから。
        QC++プログラミングの質問です以下のプログラムの何がおかしいのかわかりません#include<stdio.h>int main(void){ char str[40]={0};char sitei=0;int i ;int count=0,counts=0 ;printf("入力された文字列の文字数と指定文字数を数えます。\¥n");printf("指定文字を入力してください>");scanf("%c",sitei); //ここがどうにもうまくいかん><、謎のエラーprintf("文字列(40)未満を入力してください>");scanf("%s",str);for(i=0;str[i]!='\0';i++){ if(str[i]==sitei) counts++; count++; }printf("******************************\¥n");printf("文字列に含まれる文字数は%d個です。",count);printf("指定文字%cは%d個含まれています。",sitei,counts);printf("******************************\¥n");return 0;}
        BA修正しました。#include<stdio.h>int main(){ char str[41]={0},sitei=0; // 40だと39文字しか入りません。最後に「文末である。」という、記号(\0)を勝手に含まれるためです。だから、いれたい文字数+1必要です。あと、つなげてOK。sitei=0;int i ,count=0,counts=0 ; // つなげてOK。printf("入力された文字列の文字数と指定文字数を数えます。\¥n");printf("指定文字を入力してください>");scanf("%c",&sitei); // &をつけると、siteiの中の数字を参照します。つまり、scanf()は、絶対に&をつけましょう。printf("文字列(40未満)を入力してください>"); // 上のとおりいれたい文字数+1必要です。scanf("%s",&str); // ここも同じです。for(i=0;str[i]!='\0';i++){if(str[i]==sitei)counts++;count++;}printf("******************************\¥n");printf("文字列に含まれる文字数は%d個です。",count);printf("指定文字%cは%d個含まれています。",sitei,counts);printf("******************************\¥n");return 0;} 一応、文字数を確認するif文とErro文を作った方がいいと思います。あと、C++ならば、iostreamでもできますよ。#include<iostream>int main(){ char str[41]={0},sitei=0;int i ,count=0,counts=0 ;cout << "入力された文字列の文字数と指定文字数を数えます。\¥n";cout << "指定文字を入力してください>";cin >> sitei;cout << "文字列(40未満)を入力してください>";cin >> str;for(i=0;str[i]!='\0';i++){if(str[i]==sitei)counts++;count++;}cout << "******************************\¥n";cout << "文字列に含まれる文字数は" << count << "個です。";cout << "指定文字" << sitei << "は" << counts << "個含まれています。";cout << "******************************\¥n";return 0;}
        Q1人で作れるゲームのクオリティはどれほどのものが限界でしょうか?チームやグループなどの複数人ではなく、1人で作れるゲームのクオリティというと普通はどれほどのものが限界でしょうか...作るジャンルや使う素材にもよるかと思いますが、仮にRPGでフリー素材の場合としてください。細かい仕様はあなたの想像力と、定番システムに依存すると考えてください。プログラミングで作るとします。この場合、ゲームプログラミング知識ゼロの段階だと最低何年かかりますか?(現在大学生です)またクオリティとしてはどこまで出来ますか?そして何らかのツール(ツクールなど)を使った場合、どれだけの短縮が出来ますか?回答よろしくお願いしますm(_ _)m
        BAツクールを使うということは、プログラミングを勉強する手間を省くってことです。まあ、ツクールを勉強する手間も要りますが。しかし、細かい仕様やら大まかなシステムやら、他人にアドバイスをもらいこそすれ、結局それらの統合は、グループを組んでいようとなんだろうと、一人ですることです。会社じゃありませんからね。システムに関して言うならば、それはもちろんその人がどれほど「ゲーム性」を理解しているかに尽きます。「なんでこのゲームが面白い/つまんないのか」ということをゲームごとに理解できれば、その人は既に一定のセンスを持っているといえます。グラフィック、音楽を除けば、あとはストーリーです。これも組み立て方を知る必要があり(明確に知らなくともなんとなくで出来る場合もありますが)、話の持って生き方、そのゲームの主題に細心の注意を払わないといけません。組み立て方はなんとなくで良くても、自分でどのようなことがメインに語られるのかを自分で知らずになんとなくでやっていればまともには仕上がりません。クオリティを上げることを考えるのではなく、あくまで隙無く仕上げることを念頭に置いて作らなければいけませんよ。少なくとも、プログラミングを省けるツクールでは、それが十分に可能なはずです。

            Copyright (C)2012プログラミングのアドバイス.All rights reserved.