Mon premier Tetris et mise à jour du driver Nvidia sous Xubuntu.

Une semaine du 8 au 13 mai 2017 très spéciale puisque je l’ai consacré au développement de mon premier Tetris 🙂 Avant de parler de ça, prenons les choses dans l’ordre. Je devais corriger Xubuntu sur mon nouveau PC, parce que le driver NVIDIA pour la carte graphique n’était pas adapté à mon matériel. J’ai donc appris à désinstaller tout ce qui avait rapport au driver originel de ma version de Xubuntu (16.04) et aussi à désactiver le noyau Nouveau qui m’embêtait. J’ai ensuite bidouillé, ne sachant pas comment tout ça se faisait, et finalement j’ai trouvé un lien bien pratique qui m’a aidé à installer le bon driver. Le voici : How to install the latest nvidia drivers on ubuntu 16-04 xenial xerus. J’ai ensuite fais le test ultime, c’est à dire, lancer ATLauncher, puis Mech and Magic et voir si Xubuntu frise ou non et surtout si le jeu est fluide. Et miracle de la technique, tout fonctionne à merveille 😀

Tetris-0_1Voilà pour le point technique sous Linux, maintenant parlons de mardi à samedi. 5 jours de développement d’un Tetris qui aura fait en réalité 20 heures de travail 🙂 Mon défi était de réaliser un Tetris sans musique et sons, ni écran titre ou gameover, dans un temps assez court pour mieux penser des concepts plus simples et plus rapides à produire. Finalement, tout n’a pas été codé de façon si simple que ça, j’ai l’esprit un peu complexe qu’en-même :p Je devais partir d’une page blanche. Enfin, j’ai préparé un peu en mettant le strict minimum syndical que sont un fichier includes avec SFML et STL déclarés dedans et le main avec EXIT_SUCCESS et EXIT_FAILURE. A partir de cette page relativement blanche, et les informations que j’avais récoltés sur un papier pour savoir comment je voulais présenter le jeu, j’ai tout imaginé étape par étape sans chercher d’algorithmes ou de tutoriels sur comment faire un Tetris. C’était ça que je voulais tenter, faire sortir des solutions de ma tête pour réaliser chaque composant d’un Tetris sans jamais avoir appris à en faire un.

Je n’ai pas mis à disposition le code-source pour l’instant. Je n’ai pas encore mis la licence dans le code, et il faut que je crée un dépôt aussi. Je ferais surement ça dans la semaine. En attendant, comme vous pouvez le voir dans le menu du haut, le jeu est disponible au moins sous Windows en téléchargement pour tester la première version 🙂 Je ferais aussi une compilation sous Linux dans la semaine, et j’en profiterais pour en faire autant avec The Fantastic Labyrinth, puisque maintenant mon nouvel ordinateur est prêt. Je vous remets le lien de la page du Tetris : http://thee-donistmonk.com/tetris

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

recaptcha/recaptchalib.php at 1.0.0 · google/recaptcha · GitHub
Skip to content
Permalink
Switch branches/tags
Find file
8a45f9d Dec 1, 2014
141 lines (129 sloc) 4.47 KB
<?php
/**
* This is a PHP library that handles calling reCAPTCHA.
* - Documentation and latest version
* https://developers.google.com/recaptcha/docs/php
* - Get a reCAPTCHA API Key
* https://www.google.com/recaptcha/admin/create
* - Discussion group
* http://groups.google.com/group/recaptcha
*
* @copyright Copyright (c) 2014, Google Inc.
* @link http://www.google.com/recaptcha
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* A ReCaptchaResponse is returned from checkAnswer().
*/
class ReCaptchaResponse
{
public $success;
public $errorCodes;
}
class ReCaptcha
{
private static $_signupUrl = "https://www.google.com/recaptcha/admin";
private static $_siteVerifyUrl =
"https://www.google.com/recaptcha/api/siteverify?";
private $_secret;
private static $_version = "php_1.0";
/**
* Constructor.
*
* @param string $secret shared secret between site and ReCAPTCHA server.
*/
function ReCaptcha($secret)
{
if ($secret == null || $secret == "") {
die("To use reCAPTCHA you must get an API key from <a href='"
. self::$_signupUrl . "'>" . self::$_signupUrl . "</a>");
}
$this->_secret=$secret;
}
/**
* Encodes the given data into a query string format.
*
* @param array $data array of string elements to be encoded.
*
* @return string - encoded request.
*/
private function _encodeQS($data)
{
$req = "";
foreach ($data as $key => $value) {
$req .= $key . '=' . urlencode(stripslashes($value)) . '&';
}
// Cut the last '&'
$req=substr($req, 0, strlen($req)-1);
return $req;
}
/**
* Submits an HTTP GET to a reCAPTCHA server.
*
* @param string $path url path to recaptcha server.
* @param array $data array of parameters to be sent.
*
* @return array response
*/
private function _submitHTTPGet($path, $data)
{
$req = $this->_encodeQS($data);
$response = file_get_contents($path . $req);
return $response;
}
/**
* Calls the reCAPTCHA siteverify API to verify whether the user passes
* CAPTCHA test.
*
* @param string $remoteIp IP address of end user.
* @param string $response response string from recaptcha verification.
*
* @return ReCaptchaResponse
*/
public function verifyResponse($remoteIp, $response)
{
// Discard empty solution submissions
if ($response == null || strlen($response) == 0) {
$recaptchaResponse = new ReCaptchaResponse();
$recaptchaResponse->success = false;
$recaptchaResponse->errorCodes = 'missing-input';
return $recaptchaResponse;
}
$getResponse = $this->_submitHttpGet(
self::$_siteVerifyUrl,
array (
'secret' => $this->_secret,
'remoteip' => $remoteIp,
'v' => self::$_version,
'response' => $response
)
);
$answers = json_decode($getResponse, true);
$recaptchaResponse = new ReCaptchaResponse();
if (trim($answers ['success']) == true) {
$recaptchaResponse->success = true;
} else {
$recaptchaResponse->success = false;
$recaptchaResponse->errorCodes = $answers [error-codes];
}
return $recaptchaResponse;
}
}
?>
You can't perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Fatal error: Class 'ReCaptcha' not found in /homepages/39/d436294224/htdocs/clickandbuilds/TheeDonistMonk/index.php on line 29