consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1 @@
http://localhost/hangman.php?new=TRUE

View File

@@ -0,0 +1,74 @@
<?php
session_start();
if($_SERVER['REQUEST_METHOD'] == 'GET'){
include('words_db.php'); //$words
include('utils.php'); // funkcije
// /hangman.php?new=true
if(isset($_GET['new'])) // pricetek nove igre
{
//izberemo random besedo
$randomWordIndex = array_rand($words);
$randomWord = $words[$randomWordIndex]; //hokej
//pridobime vse unikatne crke
$availableUniqueChars = array_unique(str_split($randomWord)); // [h,o,k,e,j]
// izbermo unikatno crko
$randomUniqueCharIndex = array_rand($availableUniqueChars); // 1
$randomUniqueChar = $availableUniqueChars[$randomUniqueCharIndex]; // o
unset($availableUniqueChars[$randomUniqueCharIndex]); // izverisemo unikatno crko -> [h,k,e,j]
// delamo razkrita beseda
$revealedWord = str_repeat('_',strlen($randomWord)); // hokej -> ___
$revealedWord = revealCharactersInWord($revealedWord, $randomWord, $randomUniqueChar); // _o__
$_SESSION['availableUniqueChars'] = $availableUniqueChars;
$_SESSION['word'] = $randomWord; // hokej
$_SESSION['revealedWord'] = $revealedWord; // _o__
$_SESSION['tries'] = 0;
$obj = createResponseObject($revealedWord, $_SESSION['tries'], FALSE);
// vrnemo JSON
header('Content-Type: application/json');
echo(json_encode($obj));
}
else if(isset($_GET['check']) && isset($_GET['char'])){
// hangman.php?check=true&char=a
$guessedChar = $_GET['char'];
$word = $_SESSION['word'];
$availableUniqueChars = $_SESSION['availableUniqueChars'];
$revealedWord = $_SESSION['revealedWord'];
$_SESSION['tries'] = $_SESSION['tries'] + 1;
if(in_array($guessedChar, $availableUniqueChars)){ //Ugotovili smo crko v besedi
//odstranimo novo uganjeno črko iz polja
$guessedCharIndex = array_search($guessedChar, $availableUniqueChars);
unset($availableUniqueChars[$guessedCharIndex]);
$revealedWord = revealCharactersInWord($revealedWord, $word, $guessedChar); // hokey -> _o__ -> (k) -> _ok__
$_SESSION['availableUniqueChars'] = $availableUniqueChars;
$_SESSION['revealedWord'] = $revealedWord;
$obj = createResponseObject($revealedWord, $_SESSION['tries'], $word == $revealedWord); // _ok__ == hokej => FALSE
header('Content-type: application/json');
echo(json_encode($obj));
}
else // nismo ugotovili prave crke v besedi
{
$obj = createResponseObject($revealedWord, $_SESSION['tries'], FALSE);
header('Content-type: application/json');
echo(json_encode($obj));
}
}
}
?>

View File

@@ -0,0 +1,12 @@
<?php
session_start();
?>
<nav class="navbar navbar-expand-md navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Demo vaja 7 - AJAX in JSON</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</nav>

View File

@@ -0,0 +1,63 @@
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="sl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demo vaja 7 - AJAX in JSON</title>
<!-- Bootstrap v5.1.3 CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<!-- jQuery v3.6.0 -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="script.js"></script>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<?php
require('header.php');
?>
<div class="container-fluid">
<div class="row">
<div class="col-md-12 p-4">
<button type="button" class="btn btn-primary" id="beginGameButton" onclick="startGame()">Prični igro vislic</button>
<div id="wordContainer" style="visibility: hidden;">
<br>
<!-- Črke uganke -->
<div class="row">
<div class="col-12" id="charsDiv"></div>
</div>
<!-- Vnosna polja za reševanje uganke -->
<div class="row">
<div class="col-md-5">
<br>
<div class="input-group" style="padding-bottom: 10px;">
<input type="text" class="form-control" id="guessCharInput" maxlength="1" placeholder="Ugani črko">
</div>
<button type="button" class="btn btn-primary" id="guessCharButton" onclick="sendChar()" disabled>Pošlji</button>
<h2 style="float: right;"><span class="badge badge-secondary" id="numOfTriesSpan">Št. poizkusov: 0</span></h2>
</div>
</div>
<!-- Obvestilo, da se je uganka rešila -->
<div class="row">
<div class="col-md-5">
<div class="alert alert-success" role="alert" id="successSolved">
<strong>Pravilno ste rešili uganko! </strong>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Bootstrap v5.1.3 Javascript -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</body>
</html>

View File

@@ -0,0 +1,90 @@
var beginGameButton;
var guessCharButton;
var guessCharInput;
var numOfTriesSpan;
const hangmanURL = "hangman.php";
var guessedChar = ''; // globalna spremenljivka črke, ki smo jo vnesli v vnosno polje
$(document).ready(() => {
beginGameButton = $("#beginGameButton");
guessCharButton = $('#guessCharButton');
guessCharInput = $('#guessCharInput');
numOfTriesSpan = $('#numOfTriesSpan');
$("#successSolved").hide(); // skritje obvestila o uspešno ugotovljeni besedi
guessCharInput.on('input', (e) => { // če je vnešena črka, omogoči gumb za pošiljanje
guessedChar = guessCharInput.val();
if (guessedChar.length > 0)
{
guessCharButton.prop('disabled', false);
}
else
{
guessCharButton.prop('disabled', true);
}
});
});
function startGame(){
guessCharInput.prop("disabled", false);
guessCharInput.val("");
$("#successSolved").hide();
// klic na /hangman.php?new=true
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", hangmanURL + "?new=true", true);
xmlhttp.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200){
const json = JSON.parse(this.responseText);
$("#wordContainer").css('visibility','visible');
beginGameButton.text("Znova zazeni igro vislic");
beginGameButton.removeClass('btn-primary');
beginGameButton.addClass('btn-warning');
drawRevealedWord(json.revealedWord);
numOfTriesSpan.text("Št. poizkusov: " + jason.tries);
}
};
xmlhttp.send(null);
}
function sendChar(){
guessCharInput.val("");
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", hangmanURL + "?check=true&char=" + guessedChar, true);
xmlhttp.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200){
const json = JSON.parse(this.responseText);
drawRevealedWord(json.revealedWord);
numOfTriesSpan.text("St. poizkusov: " + json.tries);
if(json.solved){ //boolean
guessCharButton.prop("disabled", true);
guessCharInput.prop("disabled", true);
$("#successSolved").show();
}
}
}
xmlhttp.send(null);
}
function drawRevealedWord(revealedWord) // izris črk
{
const charsDiv = $('#charsDiv');
charsDiv.empty(); // zbrišemo prejšnje črke
revealedWord.split('').forEach(char => { // razdelimo do zdaj vidno besedo na znake (char-e)
charsDiv.append('<h1 class="char"><span class="badge badge-light">'+ char +'</span></h1>'); // za vsak char ustvarimo badge s črko
});
}

View File

@@ -0,0 +1,19 @@
html {
min-height: 100%;
height: 100%;
overflow: hidden;
}
body
{
box-sizing: border-box;
min-height: 100%;
height: 100%;
background-color: skyblue;
}
.char
{
float: left;
padding-right: 5px;
}

View File

@@ -0,0 +1,42 @@
<?php
// pridobimo indekse znaka, kjer se nahaja znotraj niza
function getCharacterIndicesInWord($string, $char)
{
$charIndices = array();
for ($i = 0; $i < strlen($string); $i++)
{
$tmp_char = $string[$i];
if ($tmp_char == $char)
{
array_push($charIndices, $i);
}
}
return $charIndices;
}
// zapišemo črko v dosedaj razkrito besedo
function revealCharactersInWord($revealedWord, $fullWord, $char)
{
$charIndices = getCharacterIndicesInWord($fullWord, $char); // pridobimo indekse črke v besedi
$newRevealedWord = $revealedWord;
foreach($charIndices as $charIndex)
{
$newRevealedWord[$charIndex] = $char;
}
return $newRevealedWord;
}
// ustvarimo objekt s podatki, ki jih vrnemo na spletno stran
function createResponseObject($revealedWord, $tries, $solved)
{
$obj = new stdClass(); // ustvarimo objekt praznega razreda
$obj->revealedWord = $revealedWord; // razkrita beseda
$obj->tries = $tries; // št. poizkusov
$obj->solved = $solved; // ali smo že ugotovili besedo
return $obj;
}
?>

View File

@@ -0,0 +1,3 @@
<?php
$words = array("odbojka", "nogomet", "plavanje", "golf", "tenis", "hokej", "rokomet");
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 KiB

View File

@@ -0,0 +1,159 @@
<!DOCTYPE html>
<html lang="sl">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<title>Ladijce</title>
<style>
td {
width: 25px;
height: 25px;
background-color: lightseagreen;
border-radius: 35%;
}
.hit {
background-color: orangered;
}
.mimo {
background-color: gray;
}
.down:hover{
cursor: pointer;
background-image: url("target.png");
background-size: 100%;
}
html{
width: 25%;
margin: 0 auto;
font-family: sans-serif;
/*background-image: url("bg.jpg");
background-repeat:no-repeat;
background-position:center;*/
}
</style>
<script>
$(document).ready(function(){
$("td").click(function(){
var kvadratek_x = $(this).attr("X");
var kvadratek_y = $(this).attr("Y");
var kvadratek = $(this);
console.log(kvadratek_x);
console.log(kvadratek_y);
$.get("preveri.php?X=" + kvadratek_x + "&Y=" + kvadratek_y, function(odgovor){
kvadratek.off("click");
let dekodiraj = JSON.parse(odgovor);
//console.log("D: " + dekodiraj);
if(dekodiraj.hit){
kvadratek.removeClass("down");
kvadratek.addClass("hit");
if(dekodiraj.down){
$("td").off("click");
$("td").removeClass("down");
alert("KONEC IGRE! Število poizkusov: " + dekodiraj.poizkusi);
}
} else {
kvadratek.removeClass("down");
kvadratek.addClass("mimo");
}
});
});
});
</script>
</head>
<body>
<h1>POTAPLJANJE LADJIC:</h1>
</body>
</html>
<?php
// začetek seje
session_start();
// generiranje spremenljivk
$_SESSION["poizkusi"] = 0;
$_SESSION["n"] = 0;
$izpisLadje = 0; // ko ima ladja dovolj prostora bo to postalo 1 in za tem se lahko izpiše
// če bi želeli ladje različnih velikosti bi lahko generirali ladjo velikost 2, 5, 6
$_SESSION["ladja"] = array (array(0,0),array(0,0),array(0,0),array(0,0),array(0,0));
// ----------------------------------------------------- postavljanje ladje na igralno polje
// če je 1 je ladja postavljena horizontalno, če pa je 2 pa vertikalno
do{
$korvLadjeX = rand(0,9);
$korvLadjeY = rand(0,9);
if(rand(1,2) == 1){ // 1 - vertikalno 2 - vodoravno
if(rand(1,2) == 1){ // 1 - desno/gor 2 - levo/dol
if($korvLadjeX + 4 < 10){
for($i = 0; $i < 5; $i++){
//echo "prviLoop";
$_SESSION["ladja"][$i][0] = $korvLadjeX + $i;
$_SESSION["ladja"][$i][1] = $korvLadjeY;
}
$izpisLadje = 1;
}
} else{
if($korvLadjeX - 4 > 1){
for($j = 0; $j < 5; $j++){
//echo "drugiLoop";
$_SESSION["ladja"][$j][0] = $korvLadjeX - $j;
$_SESSION["ladja"][$j][1] = $korvLadjeY;
}
$izpisLadje = 1;
}
}
} else {
if(rand(1,2) == 2){ // 1 - desno/gor 2 - levo/dol
if($korvLadjeY + 4 < 10){
for($i = 0; $i < 5; $i++){
//echo "tretjiLoop";
$_SESSION["ladja"][$i][0] = $korvLadjeX;
$_SESSION["ladja"][$i][1] = $korvLadjeY + $i;
}
$izpisLadje = 1;
}
} else{
if($korvLadjeY - 4 > 1){
for($j = 0; $j < 5; $j++){
//echo "zadnjiLoop";
$_SESSION["ladja"][$j][0] = $korvLadjeX;
$_SESSION["ladja"][$j][1] = $korvLadjeY - $j;
}
$izpisLadje = 1;
}
}
}
}while($izpisLadje != 1);
// generiranje polja
echo "<table id = 'polje'>";
for($i = 0; $i < 10; $i++){
echo "<tr>";
for($j = 0; $j < 10; $j++)
echo '<td class="down" Y="'.$i.'"X="'.$j.'"></td>'; // '.$i.' '.$j.'
echo "</tr>";
}
echo "</table>";
//echo '<hr/><pre>' . print_r($_SESSION, 1) . '</pre><hr/>';
?>

View File

@@ -0,0 +1,25 @@
<?php
session_start();
$_SESSION["poizkusi"] = $_SESSION["poizkusi"] + 1;
// spremenljivke
$down = False;
$hit = False;
$koordinataX = $_REQUEST["X"];
$koordinataY = $_REQUEST["Y"];
/*echo "X: ".$koordinataX;
echo "Y: ".$koordinataY;*/
for($i = 0; $i < 5; $i++){
if(isset($_SESSION["ladja"][$i]) && $_SESSION["ladja"][$i][0] == $koordinataX && $_SESSION["ladja"][$i][1] == $koordinataY){
$hit = True;
unset($_SESSION["ladja"][$i]);
break;
}
}
if($hit == True){
$_SESSION["n"] += 1;
if($_SESSION["n"] == 5)
$down = True;
}
// json
echo json_encode(array("poizkusi" => $_SESSION["poizkusi"], "down" => $down, "hit" => $hit));
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB