consolidate all repos to one for archive
This commit is contained in:
1
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/TEST.txt
Normal file
1
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/TEST.txt
Normal file
@@ -0,0 +1 @@
|
||||
http://localhost/hangman.php?new=TRUE
|
BIN
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/USS_vaja7_demo.zip
Normal file
BIN
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/USS_vaja7_demo.zip
Normal file
Binary file not shown.
74
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/hangman.php
Normal file
74
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/hangman.php
Normal 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));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
12
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/header.php
Normal file
12
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/header.php
Normal 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>
|
63
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/index.php
Normal file
63
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/index.php
Normal 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>
|
90
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/script.js
Normal file
90
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/script.js
Normal 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
|
||||
});
|
||||
}
|
19
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/styles.css
Normal file
19
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/styles.css
Normal 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;
|
||||
}
|
42
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/utils.php
Normal file
42
semester_1/uvod_v_svetovni_splet/Vaja_7/Demo/utils.php
Normal 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;
|
||||
}
|
||||
?>
|
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
$words = array("odbojka", "nogomet", "plavanje", "golf", "tenis", "hokej", "rokomet");
|
||||
?>
|
BIN
semester_1/uvod_v_svetovni_splet/Vaja_7/Naloga/bg.jpg
Normal file
BIN
semester_1/uvod_v_svetovni_splet/Vaja_7/Naloga/bg.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 490 KiB |
159
semester_1/uvod_v_svetovni_splet/Vaja_7/Naloga/potopi.php
Normal file
159
semester_1/uvod_v_svetovni_splet/Vaja_7/Naloga/potopi.php
Normal 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/>';
|
||||
?>
|
||||
|
||||
|
25
semester_1/uvod_v_svetovni_splet/Vaja_7/Naloga/preveri.php
Normal file
25
semester_1/uvod_v_svetovni_splet/Vaja_7/Naloga/preveri.php
Normal 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));
|
||||
?>
|
BIN
semester_1/uvod_v_svetovni_splet/Vaja_7/Naloga/target.png
Normal file
BIN
semester_1/uvod_v_svetovni_splet/Vaja_7/Naloga/target.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.5 KiB |
Reference in New Issue
Block a user