しかし、実際には、Qtでモバイルアプリケーションを作成することがどのような「ハード」な作業であるかについてお話したいと思います。簡単な例を見てみましょう。
だから。 4月下旬、4つの連続した練習、シンバ付きの携帯電話、退屈ないたずらがあります。 そして、頭の1つは、その不条理で素晴らしいアイデアを思い付きます! 「近くに鋭い小さな男の子がいて、種がなかったらどうしますか?」 あなたは彼らと半分仲良くしないと、彼らは理解しません!」 それでは、ビジネス... Qt SDKを配置し、Qt Creatorをすばやく起動して、新しいプロジェクト(およびデスクトップアプリケーション)を作成します。 3つのパネル(メニュー、ゲーム、結果)を計画しながら、作業を並列化し、次のコンピューターのスタッフがレンガの壁と種のイメージを描きます。 また、適切なサウンドトラックを選択してください...
これはどのように起こりますか...(もちろんスクリーンショットを撮りました)
もちろん、アーキテクチャにより、アプリケーションは最も単純であることがわかりますが、これからも同じくらい楽しくなります。 クラスは3つだけです。
QSlidingStackedWidget - ( . , ) MainWgt - . SemkoItem - QGraphicsPixmapItem, , .
メニューの実装と結果について話す価値はないと思います。1つまたは別のプレイヤーによってスラリー化されたシードの数が機能し、保存されていることを言及するだけで十分です。
しかし、ゲーム自体については、少し言及します。 基本的に、これはQGraphicsView + QGraphicsSceneです。これは、新しい種子を動的に作成するタイマーです。この種子は、落下を監視し、それ自体をアニメーション化する個別に飛行する種子のクラスです。 イベントに反応し、最終的にその座標を監視して、可視性と大きなランダム性の境界を離れるときに自分自身を破壊する時間を確保します。 それはかなり平凡に見えます...
ゲームを開始します。
void MainWgt::startGame() { if (isSound()){ moMainTheme->play(); } placeSemkoTimer->stop(); placeTimerInterval = 1000; placeSemkoTimer->setInterval(placeTimerInterval); nextLevelCount = nextLevelIncrement; semkoInterval = 30; scene->setSceneRect(0, 0, 10, 10); ui->lcdSluzgano->display(0); ui->lcdUnluzged->display ( lives ); placeSemkoTimer->start(); }
タイマーに種を投げます:
void MainWgt::placeSemko() { SemkoItem *semko = new SemkoItem(scene, semkoInterval); connect(semko, SIGNAL(luzg()),this,SLOT(luzg())); connect(semko, SIGNAL(unluzged()),this,SLOT(unluzged())); connect(this, SIGNAL(nextLevel()),semko,SLOT(nextLevel())); connect(this, SIGNAL(gameOver(bool)),semko,SLOT(gameOver(bool))); scene->addItem(semko); }
そして、私たちはこれまでに
void MainWgt::luzg() { int c = ui->lcdSluzgano->intValue() + 1; if ( c >= nextLevelCount ){ nextLevelCount += nextLevelIncrement; semkoInterval -= 3; if (semkoInterval <= semkoIntervalMin){ semkoInterval = semkoIntervalMin; } int livesAdd = ui->lcdUnluzged->intValue() + 3; ui->lcdUnluzged->display ( livesAdd ); placeTimerInterval = placeTimerInterval - placeTimerIntervalDecrement; if (placeTimerInterval <= placeTimerIntervalMin){ placeTimerInterval = placeTimerIntervalMin; } placeSemkoTimer->stop(); placeSemkoTimer->setInterval(placeTimerInterval); placeSemkoTimer->start(); emit nextLevel(); } ui->lcdSluzgano->display ( c ); }
現時点では、ご覧のとおり、すでにいくつの種子が前かがみになっているのか、次のレベルに移動する(したがって、投棄と落下の速度を上げる)かどうかも検討しています。
そうですね、他に何が面白いのでしょうか...はい、実際、特別なものはありません...だから、私たちは打ち上げ、tetstim、パラメーターを調整し、欠点を取り除き、音楽を固定し(Glom and Courage-Bambuyaグループのおかげで)...
メニュー...
おもちゃ...
そして、下からそのようないLCDを見ないでください、それは電話で非常に難しいです...
「Oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo 「アハb ..!」最もせっかちな発言「」そして、今どうやってしゃがんでマウスを突くのか。 モニターを見ていますか? 不便です!」
「ゴミは戦争です。主なものは機動です!」主な開発者はつぶやき(つまり)断固として移植に進みました...ああ、それはどれほど困難で、長い間...すでに15分=)。
スキーム:
1)デバイスをPC Suiteモードに固定します
2)このためにPCにインストールされたOviスイートを使用して、Qtを配置します
3)作成者にアプリケーションの新しいビルドオプションを追加します
4)リリースバージョンを選択し、実行をクリックします
それだけです。プログラムが収集され、アプリケーションの起動メニューがスマートフォンのディスプレイに喜んで表示されるまで待機する必要があります。
だから。 結果は何ですか? Qtを使用して、わずか数時間で、完全に再生可能なfigovinaをすばやくリベットでき、すべてのデスクトッププラットフォームで動作する準備ができ、デバイスの開発環境から簡単に開始できます。 注目すべき点は、MaemoおよびAndroidポートでは、タンバリンとの余分なダンスなしで、すべてがシンビアンのように始まります。 かんたん そう思う。 優雅に? 間違いなく! =)
プロジェクト自体について:
ページ
リポジトリ
Symbian 9.4のバージョン 。 それをインストールするには、最初にQtをインストールする必要があります。
ところで、はい...すべてがQMLを使用せずに、純粋なC ++で行われました。 それにもかかわらず、すぐに楽しくなりました。 Qtがもっと人気のあるプラットフォームになることを本当に望んでいます。おそらく5.0のリリース後にはそうなるでしょう...
UPD:
Androidのおもちゃのすばらしい移植に同志obramkoに感謝します。
スクリーンショット: