Archive pour Janvier 2009

Quel genre de «modeste» jour: (

Je préfère maintenant rester au lit. obtenir en raison de la fête d'anniversaire de mon frère le sommeil déjà très peu, je voulais commencer la journée en fait plutôt calme. Mais le destin avait autre chose en face de moi.

Les problèmes déjà deux fois-dessus avec mon ordinateur a pris avant le premier café de la journée dans un état permanent. Depuis vain Auseiander et encore plus le montage. Il ne veut pas plus. Parfois, il apportait encore l'approche tourmentée un état bip, qui était alors déjà.

Heureusement je peux toujours envoyer un iPod à mes e-mails et le (ou écrire aux soins de »la« blog?) Blog, j'espère vraiment que de l'Eee PC ici eintrudelt mardi! Pour tant que je n'aurai l'argent pour un nouveau conseil d'administration, avec correspondance Cpu ainsi que je vais probablement prendre 1-2 mois.

26 janvier 2009

GORC - pixel sans billet

Ce que j'ai aujourd'hui la journée à chercher la tête secouer * morts *

Cadre pour les menus et les dialogues ont été élaborés sans aucun problème, ok ... avons-nous rapidement complété le menu principal, puis après le travail. Nix ajustement parce que ... D'une certaine manière, soit les éléments de menu pas dans la fenêtre ou la fenêtre était trop grande. Mais que pouvez-vous aller mal quand une partie de la trame exactement 8 × 10 pixels est grand et une lettre de la police est la même taille? mathématiques simples, ne correspond pas encore tout!

Je n'avais en fait que quelques lettres des ressources de la police de peinture manquez un cadre pour voir l'erreur. Jusque-là, j'ai eu ma source sans doute déjà lu mille fois sans correction résultat. La fonction standard pour les polices bitmap inserts Löve (qui bien sûr, je ne sais pas) est une nouvelle d'un pixel entre deux lettres. Mais heureusement il y avait aussi une fonction, Merci à laquelle je ne pouvais laisser cette pixels stupide;)

Eh bien, j'ai maintenant assez de programmation. Le menu peut attendre Maintenant qu'elle est enfin aujourd'hui, qui a 18 ans et est déjà forte sans moi à la fête.

Félicitations, mon frère!

2 commentaires Janvier 24th, 2009

- Jeu de classes d'objets GORC terminé, et après?

Préface: J'ai remarqué que je GORC mon fil dans le jeu Robot Forum maintenant abusé DevBlog. Les temps je vais agir contre elle, et maintenant mes progrès et de pensées dans ce blog ... où ils appartiennent en fait trop;)

Alors ... j'ai utilisé la semaine dernière et farcie de tous les éléments du jeu dans les classes. Le contenu d'une scène n'est plus dans un tableau 2D, mais sur des tables Lua deux. L'un des robots, alors peut-être tous les PNJ d'autres viennent ici. Et dans une autre table, mettre tous les autres éléments (murs, or, etc).

Le but de la procédure est de rendre le jeu de logique gérable. Au lieu de «longue blocs if-then-else maintenant mettre toute la logique d'un objet particulier dans son instance de classe. Joue un exemple:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
  "Gold" , Object ) Gold = class ("Gold", Object)

 "images/gold-0.png" ) Image love.graphics.newImage Gold = ("images/gold-0.png")
 , 0 ) Or l'image: SetCenter (0, 0)

 "sounds/gold.wav" ) Gold Sound love.audio.newSound = ("sons / gold.wav")

 x, y, params ) Or la fonction init: (x, y, params)
	 self.super: init (x, y,)

	 self.ani = Gold Image
 fin

 obj ) Or la fonction: canEnter (obj)
	 - Peut être saisi par le seul joueur
	 obj ) then return false end s'il n'est pas joueur: faites (obj) puis retour fin fausses
	 return true
 fin

 obj ) Or la fonction: onEntered (obj),
	 obj ) then return end si le joueur n'est pas: faites (obj) puis retour fin

	 Auto: remove ()
	 spieler.gold spieler.gold + 1 =
	 love.audio.play (Gold Sound)
 fin 

Ok. Un objet de collection est maintenant aucun script réel défi technique. Mais comment quelque chose de plus compliqué?

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 "Isolator" , Moving ) IsolatorImage = love.graphics.newAnimation ( love.graphics.newImage ( "images/isolator-0.png" ) , 16 , 12 , 0.1 , 0 ) IsolatorImage:setCenter ( 8 , 6 ) function Isolator:init ( x, y, params ) self.super:init ( x, y ) self.ani = IsolatorImage self.speed = spieler.speed end function Isolator:canEnter ( obj ) local dx, dy -- kann nur vom Spieler betreten werden if not Player:made ( obj ) then return false end -- bewegt sich der Isolator bereits, -- können wir ihn nicht betreten, bzw. in seine Richtung gehen -- da wir sonst durch ihn hindurch laufen if self:isMoving ( ) then return false end dx = self.x - obj.x dy = self.y - obj.y return self:canMoveTo ( dx, dy ) end function Isolator:canMoveTo ( dx, dy ) local feld = Szenen:current ( ) :get ( self.x + dx, self.y + dy ) if #feld == 0 then self:setTarget ( dx * 16 , dy * 12 ) return true end for i, e in pairs ( feld ) do if not Isolator:made ( e.obj ) and not Barbwire:made ( e.obj ) then return false else if e.obj:canMoveTo ( dx, dy ) then self:setTarget ( dx * 16 , dy * 12 ) return true end end end return false end Isolant = classe («isolateur», déménagement) = isolant love.graphics.newAnimation Image (love.graphics.newImage ("images/isolator-0.png"), 16, 0,1, 0) isolant Image 12,: SetCenter (8, 6 ) la fonction d'isolateurs: init (x, y, params) self.super: init (x, y) self.ani Image isolant = = self.speed spieler.speed End Function Isolant: canEnter (obj) dx locales, dy - ne peut ne sont pas accessibles par les joueurs si le joueur: Made (obj) puis retour fin fausse - de l'isolant se déplace déjà - nous ne pouvons pas y entrer, ou de sa direction pour aller en - sinon nous courons à travers lui l'auto si: isMoving (), puis retour dx = False End self.X - dy = obj.x self.y - auto retour obj.y: canMoveTo (dx, dy) End Function isolant: canMoveTo (dx, dy) = champ local scènes: en cours (): get (self.X + dx, dy self.y +) si le champ == 0 then # * auto: setTarget (dx 16, dy * 12) de retour fin de faux i, s par paires (champ) faire si pas Isolant: Made (e.obj) et non barbelé: (e.obj) alors return false else if e.obj: canMoveTo (dx, dy), puis l'auto: setTarget fait (dx * dy * 16 12) retour vraie fin fausse déclaration end end end 

Un autre avantage est la capacité côté maintenant avoir plusieurs articles sur le même terrain. Quand on entre dans une scène pour la première fois, est généralement un seul objet dans un champ. Mais qui a joué le jeu de robot sait déjà que quelques-uns des temps est venu d'être propre à l'inventaire. Tada! Quoi de mieux que tout ce qui n'est pas nécessaire pour le moment, il suffit de jeter sur un tas? Et quand il est à nouveau nécessaire, il suffit de lancer sur le terrain et recueillir tout ce que vous automatiquement.

Malheureusement, je ne peux pas vraiment content de mon petit "succès" parce que ça coûte des cadres (l'intro avec un peu moins de 1000 de 60 FPS sur les murs est juste tombé en dessous de la 50e scènes de garder toujours à la frontière ( 300-400 objets), mais une fois que vous les pousser les isolateurs, pouvez-vous aussi disparaître ici jusqu'à 10 images.

Suis toujours l'un ou autre idée comment je peux limiter la perte. Mais à la longue, je serais mieux à la recherche d'une solution performante quelque chose. Ce qui complique, mais en aucun cas les scripts rapide central des objets ...

Je voudrais maintenant, mais vous inquiétez pas, et je pense déjà à la GUI widment GORC. Enfin, le jeu serait les menus, boîtes de message, et surtout l'inventaire. Nous allons voir, la nuit ne fait que commencer xD

22 janvier 2009

Ordinateurs ne serait même pas recommencer: (

Cette fois, ce n'était pas le câble réseau, mais l'alimentation de l'alimentation de la carte mère, j'ai dû donner un coup de main. Bien sûr, je viens avec cette idée qu'après j'avais tiré tout le processus depuis la dernière fois ... en vain cette fois.

La question demeure: Pourquoi?

Est-ce parce que je fois que l'ordinateur est éteint, la bande hors tension? Si je ne reçois pas les jus de mes périphériques USB aurait arrêter le PC et de la lumière jusqu'à la veille de son bonheur. Et une mauvaise connexion, je ne peux pas imaginer une réalité, parce que la porte n'est pas fermée, même mon chat est à proximité de l'ordinateur.

21 janvier 2009

et GORC vidéo CamStudio

Dû se dérouter un peu et je dois trouver un freeware pour enregistrer des vidéos d'écran faite. Il ne faut pas perdre, après tout, je veux juste enregistrer, et ce, peut-être télécharger sur Youtube. Wanted ... Résultats:)

-> CamStudio <-

Décompressé, le format vidéo MPEG4 et réglé à pression pour l'inclusion. Et déjà j'ai eu ma première vidéo de GORC:

Vraiment beau programme:) Cependant, en quelque sorte ce que je n'ai pas les bons réglages pour enregistrer le son et la musique du programme filmé et sélectionnez l'option pour le film directement à la fin fenêtre. Avec CamStudio il semble que je ne peux sélectionner la zone. Et je suppose donc qu'il ya trop ou trop peu de la fenêtre.

Eh bien, personne n'est parfait * lol *

20 janvier 2009

Classes en Lua

J'ai eu quelques jours de départ des mouvements de fluide dans GORC installé et essayé le code un peu plus facile à faire. Parce que, comme Charlie et les robots sont assez similaires en bonneterie, rien ne pouvait être plus de deux objets également attirer les mêmes fonctions (déplacement, l'utilisation de ...) Soit. C'est ce qui ressort dans à peu près le suivant:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
  movable_create fonction ()
     = (M)
     x = 0
     ma = 0
     m retour
 fin

 m, x, y ) fonction movable_setPosition (m, x, y)
     x = x
     ma = y
 Fin

 - Exemple:
 joueur = movable_create ()
 , 2 ) movable_setPosition (joueur, 2, 2) 

Tout a bien fonctionné. Mais tout à l'heure que je pensais. Ne serait-il intéressant de construire l'objet entier? Mais comment fait-on dans le Lua? Après beaucoup de googler et violon, je suis venu à la conclusion suivante:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
  - Class.lua

 baseClass ) classe de fonction (BaseClass)
	 locales new_class = ()
	 __index = new_class } class_mt = __index () = new_class locales

	 self, ... ) fonction new_class: nouvelle (auto, ...)
		 locales Newin = ()
		 newinst, class_mt ) setmetatable Newin (class_mt)
		 Newin: init ()
		 retour Newin
	 fin

	 baseClass then si ~ = nil alors BaseClass
		 new_class, { __index = baseClass, __call = function ( self,... ) return self:new ( ... ) end } ) setmetatable (new_class, __index = (BaseClass, __call = function (auto, ...) à retour automatique: fin (...) nouveau)),
	 fin

	 fonction new_class: la classe ()
		 new_class retour
	 fin

	 new_class fonction: super ()
		 BaseClass retour
	 fin

	 new_class fonction init ()
	 fin

	 theClass ) new_class fonction: IS (theClass)
		 false b_isa local = false

		 new_class cur_class local = new_class

         nil ~ = cur_class ) and ( false == b_isa ) do while (~ = nil cur_class) et (false == b_isa) ne
             theClass then alors si cur_class == theClass
                 b_isa = true
             d'autre
                 cur_class = cur_class: super classe ()
             fin
         Fin

         b_isa retour
	 fin

	 new_class retour
 fin 

Le meilleur dans son propre fichier, par exemple "class.lua sauver. Dans l'action voit l'ensemble, nous avons:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 "class.lua" ) -- Standard Objekt Object = Class ( nil ) function Object:init ( ) -- Gridposition self.x = 0 self.y = 0 -- Sprite / Animation self.ani = 0 end function Object:setPosition ( x, y ) self.x = x self.y = y end -- Bewegliche Objekte Moveable = Class ( Object ) function Moveable:init ( ) self.super ( ) :init ( ) -- Ziel Gridposition self.nx = 0 self.ny = 0 -- Bewegungsrichtung (entfernen!) self.dir = 0 self.ani_x = 0 self.ani_y = 0 -- Felder pro Sekunde self.speed = 4 self.last_update = 0 end function Moveable:draw ( ) local x, y x = ( self.x - 1 ) * 16 + self.ani_x y = self.y * 12 + self.ani_y love.graphics.draw ( self.ani, x, y ) end ... -- Beispiel: mauer = Objekt ( ) mauer:setPosition ( 10 , 15 ) spieler = Movable ( ) spieler:setPosition ( 2 , 2 ) love.filesystem. require ("class.lua") - Standard objet de la classe Object = (nil) fonction de l'objet: init () - Gridposition self.X self.y = 0 0 = - Sprite / self.ani Animation = 0 End Function objet: setPosition (x, y) x = y self.X self.y fin = - mobiliers objets mobiliers = classe (objet) fonction de meubles: init () self.super (): init () - Objectif Gridposition self.ny self.nx = 0 = 0 - retirer la direction du mouvement (!) 0 = self.dir self.ani_x = 0 = 0 self.ani_y - trames par seconde = self.last_update self.speed 4 = fin fonction 0 meubles: draw () locale x, y x = (self.X - 1) 16 = y + self.ani_x self.y * 12 + * self.ani_y love.graphics.draw (self.ani, x, y) fin ... - par exemple: mur = Object () mur: setPosition (10, 15) joueurs mobile = () joueurs: setPosition (deux, 2) 

Demandez-moi maintenant, mais pas exactement comment tout cela fonctionne;) Pour moi, un DAS de le faire. Qui est toujours intéressé par le fonctionnement peut être si intelligent de lire les pages suivantes:

19 janvier 2009

Jeu de la vidéo sur Youtube Robot

Au début de Décembre avait Hercules du jeu Robot Forum environ 8 minutes sur vidéo de gameplay épisode de Youtube Junior une reingestellt Robot. Peut-être qu'il se réveille, même lorsque l'un ou l'autre intérêt Robot Games essayer?

En tant que quasi vieux jeu de robot , je dois admettre que je lièvre Le truc avec le blocage des adversaires à l'aide Säurefläschen ne savais pas * rires * C'est donc le même nombre de points délicats. Merci Herc:)

17 janvier 2009

, La menthe poivrée contre la vessie liqueur de thé Teeworlds

Je suis en fait plus, comme l'agréable, mais Teeworlds il me donna les deux dernières heures vraiment impressionné:)

Loud Guy couleur sphériques uns contre les autres dans des cartes colorées. Les touches WASD dirige-on être Kugelviech et vise avec la souris. Un clic gauche permet le tir, molette de défilement changer cette situation. Utilisation Leerstaste est sauté, au bon moment est aussi un saut un peu plus élevé. Et la cerise est le crochet, en droit, avec laquelle on peut augmenter après un peu de formation à de nouveaux sommets.

Au lieu de se mettre au lit, je vais une fois les points plus diligente * onde *

16 janvier 2009

Près de crise cardiaque - PC morts

Chaque matin, j'ai donné mon Power PC et marcha vers la cuisine et du café frais. Seulement, cette fois a donné toute la couleur de mon visage encore tout endormi quand je reviens à l'ordinateur. Il fredonna plein d'énergie, mais ne montrait aucun tableau. Pour le mode de faible puissance de l'écran, je n'ai pas été assez longtemps dans la cuisine. Il n'est pas cassé? Malheur!

Dans le passé une heure et demie, j'ai exploité ma pièce par pièce PC pauvres, pour obtenir les erreurs sur la piste. Plusieurs fois, le CMOS vidé tout. Rien: (fans ont sauté sur, mais il n'y avait même pas le "pas de mémoire" Beep. Inside j'ai déjà compris quand j'ai eu assez d'argent pour une nouvelle carte mère, CPU nouvelle, ou même les deux.

Le seul que je n'avais pas encore été déduits, le câble réseau. Et devinez ce qui s'est passé comme je l'ai, c'est que dans le dernier acte de mon désespoir de suite? Bieeeeep Bieeeeep parce qui voulait :):):) mémoire afin que morceau par morceau tout remettre en démarrage de l'ordinateur .... raccordement au réseau câblé couru un nouveau procès, démarrage de l'ordinateur quand même:)

S'il vous plaît chers PC, NE JAMAIS faire quelque chose comme moi!

15 janvier 2009

iPhone App multilingue

Imaginez-vous en face d'elle juste un petit jeu pour l'iPhone et que rédigé en allemand. Mais parce que vous voulez faire appel au plus large public possible, il devrait y avoir une version anglaise. Mais comment allez-vous faire à ce problème? Une fois, j'ai googlé un peu.

Xcode dans votre répertoire de projet que vous soumettez à deux répertoires: "de.lproj" et "en.lproj"

crusher_locale_dirs.jpg

Maintenant, il s'adapte à votre projet en utilisant Ajouter -> Nouveau dossier ... -> Autres -> Fichier des chaînes Deux nouveaux fichiers ajoutés Localizable.strings ". Un dans la de.lproj »et l'autre dans le" en.lproj "répertoire.

crusher_locale_newfile.jpg crusher_locale_newfile_en.jpg crusher_locale_newfile_de.jpg

Votre projet vue devrait ressembler à ceci:

crusher_locale_xcode_0.jpg

J'ai parfois considérée comme un exemple de menu principal, le code ressemble plus à ce qui suit:

  1
 2
 3
 4
 5
 6
 7
  MenuItem * start =
     @ "Starte Spiel" [MenuItemFont itemFromString: @ début du match "
     @selector ( startGame : ) ] ; : Auto: sélecteur @ sélecteur de cible (début du jeu:)];

 * Aide MenuItem =
     @ "Hilfe" [MenuItemFont itemFromString: @ "Aide"
     @selector ( help : ) ] ; : Auto: sélecteur @ sélecteur de cible (aide:)]; 

Les chaînes de "début de la partie» et «aider à remplacer« Nous, les NSLocalizedString () la fonction. StartGameKey et HelpKey maintenant céder la place à la corde que nous avons dit vouloir le cours de traduction;)

  1
 2
 3
 4
 5
 6
 7
 8
 9
  MenuItem * start =
     [MenuItemFont itemFromString:
     , @ "" ) NSLocalizedString (@ "StartGameKey", @ ")
     @selector ( startGame : ) ] ; : Auto: sélecteur @ sélecteur de cible (début du jeu:)];

 * Aide MenuItem =
     [MenuItemFont itemFromString:
     , @ "" ) NSLocalizedString (@ "HelpKey", @ ")
     @selector ( help : ) ] ; : Auto: sélecteur @ sélecteur de cible (aide:)]; 

Même nos deux Localizable.strings éditer des fichiers, parce que ce sont nos choix plus tard, le programme de chaînes de caractères traduites.

Pour l'allemand:

  1
 2
  "Starte Spiel" ; "StartGameKey" = jeu de "start";
 "Hilfe" ; "HelpKey" = "Aide"; 

et en anglais:

  1
 2
  "Start Game" ; «StartGameKey '= Start Game";
 "Help" ; "HelpKey" = "Aide"; 

Et déjà que nous ayons jamais livrés à l'iPhone les meilleures traductions de langue:) est une langue devrait être fixé, pour laquelle nous vous proposerons pas de traduction semble être la traduction en anglais ce qui est pris, dans la plupart des cas, complètement autorisé.

13 janvier 2009


Traducteur

Pages

Derniers articles

Catégories

Archives

Meta


Page optimisée par WP rapetisser WordPress Plugin