html edition
This commit is contained in:
parent
2c6d44e0a0
commit
98751fe5ad
|
@ -0,0 +1,172 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>elementi (yada bileşiği) tahmin et.py</title>
|
||||
<link rel="stylesheet" href="./pyscript/pyscript.css" />
|
||||
<script defer src="./pyscript/pyscript.js"></script>
|
||||
<!--script>setInterval(() => {window.scrollTo(0, document.body.scrollHeight);}, 1)</script-->
|
||||
</head>
|
||||
<body>
|
||||
<py-script>
|
||||
import js
|
||||
from random import randint as ri
|
||||
|
||||
puan, soru = (0,0)
|
||||
|
||||
evet = True
|
||||
hayır = False
|
||||
|
||||
sor = evet #oyun modunu sorması için
|
||||
|
||||
sembolik = ['H','He','Li','Be','B','C','N','O','F','Ne','Na','Mg','Al','Si','P','S','Cl','Ar','K','Ca','Cr','Mn','Fe','Co','Ni','Cu','Zn','Br','Ag','Sn','I','Ba','Pt','Au','Hg','Pb']
|
||||
sembolik_yaygın = ['hidrojen','helyum','lityum','berilyum','bor','karbon','azot','oksijen','flor','neon','sodyum','magnezyum','alüminyum','silisyum','fosfor','kükürt','klor','argon','potasyum','kalsiyum','krom','mangan','demir','kobalt','nikel','bakır','çinko','brom','gümüş','kalay','iyot','baryum','platin','altın','cıva / civa','kurşun']
|
||||
|
||||
bileşik = ['H2O','HCl','H2SO4','HNO3','CH3COOH','CaCO3','NaHCO3','NH3','Ca(OH)2','NaOH','KOH','CaO','NaCl']
|
||||
bileşik_yaygın = ['su','tuz ruhu / hidroklorik asit','zaç yağı / sülfürik asit','kezzap / nitrik asit','asetik asit / sirke asidi / sirke ruhu','kireç taşı','yemek sodası / sodyum bikarbonat / kabartma tozu','amonyak','sönmüş kireç / kalsiyum hidroksit','sud kostik / sodyum hidroksit','potas kostik / potasyum hidroksit / potasyum hidrat','sönmemiş kireç / kalsiyum oksit','yemek tuzu / sodyum klorür / sofra tuzu / tuz']
|
||||
|
||||
bileşik_bitti, sembolik_bitti = (False, False)
|
||||
|
||||
soru_türü = "random"
|
||||
soru_türü_açıklaması ="""3 soru türü var, bu soru türleri;<br/>
|
||||
random\t = altdakkilerden birini sorar (her seferinde değişir)<br/>
|
||||
sembolik = sembollerden sorar (C, O, H gibi)<br/>
|
||||
bileşik\t = bileşiklerden sorar (H2O gibi)<br/>
|
||||
hangisini seçiyorsun?<br/>
|
||||
"""
|
||||
|
||||
soru_sıralaması = "random"
|
||||
soru_sıralaması_açıklaması = """3 soru sıralaması var, bu soru sıralamaları;<br/>
|
||||
random\t = altdakilerden birini yapar (her seferinde değişir)<br/>
|
||||
yaygın\t = yaygın sorup sembolik halini cevap olarak ister ("hidroklorik asit" cevap:HCI gibi)<br/>
|
||||
sembolik = sembolik sorup yaygın halini cevap olarak ister(HCI cevap:"hidroklorik asit" gibi)<br/>
|
||||
hangisini seçiyorsun?<br/>
|
||||
"""
|
||||
|
||||
def init():
|
||||
global bileşik_bitti,sembolik_bitti
|
||||
if soru_türü == "sembolik": bileşik_bitti = True
|
||||
if soru_türü == "bileşik": sembolik_bitti = True
|
||||
|
||||
def str_to_list(string):
|
||||
return string.split(sep=None, maxsplit=0)
|
||||
|
||||
def soru_turu_sor():
|
||||
global soru_türü
|
||||
print(soru_türü_açıklaması, end="")
|
||||
while True:
|
||||
user_cevap = input("$<p> </p>").casefold()
|
||||
|
||||
if user_cevap == "random" or user_cevap == "sembolik" or user_cevap == "bileşik":
|
||||
soru_türü = user_cevap
|
||||
break
|
||||
elif f"{user_cevap}" == '':
|
||||
print(f"bir şey yazılmadı, default olarak soru türü \"{soru_türü}\" olarak seçildi<p> </p>")
|
||||
break
|
||||
else: print(f"\"{user_cevap}\" bir soru türü değil, sadece \"random\", \"sembolik\" ve \"bileşik\" yazmanız lazım.")
|
||||
|
||||
def soru_siralamasi_sor():
|
||||
global soru_sıralaması
|
||||
print(soru_sıralaması_açıklaması, end="")
|
||||
while True:
|
||||
user_cevap = input("$ ").casefold()
|
||||
|
||||
if user_cevap == "random" or user_cevap == "yaygın" or user_cevap == "sembolik":
|
||||
soru_sıralaması = user_cevap
|
||||
break
|
||||
elif f"{user_cevap}" == '':
|
||||
print(f"bir şey yazılmadı, default olarak soru türü \"{soru_sıralaması}\" olarak seçildi<p> </p>")
|
||||
break
|
||||
else: print(f"\"{user_cevap}\" bir soru sıralaması değil, sadece \"random\", \"yaygın\" veya \"sembolik\" yazmanız lazım.<p> </p>")
|
||||
|
||||
def tahmin(yaygın_adı,sembolik_formülü):
|
||||
global puan, soru
|
||||
if soru_sıralaması == "random":
|
||||
random_int = ri(0,1)
|
||||
if random_int == 0:
|
||||
başlık = yaygın_adı
|
||||
cevap = sembolik_formülü
|
||||
if random_int == 1:
|
||||
başlık = sembolik_formülü
|
||||
cevap = yaygın_adı
|
||||
elif soru_sıralaması == "yaygın":
|
||||
başlık = yaygın_adı
|
||||
cevap = sembolik_formülü
|
||||
elif soru_sıralaması == "sembolik":
|
||||
başlık = sembolik_formülü
|
||||
cevap = yaygın_adı
|
||||
else:
|
||||
print(f"\"{soru_sıralaması}\" diye bir soru sıralaması bulunamadı. geçerli soru sıralamaları: random, yaygın, sembolik (hepsinin açıklaması kaynak kodda)")
|
||||
exit(1)
|
||||
|
||||
if ' / ' in cevap: cevap = cevap.split(' / ')
|
||||
if not isinstance(cevap,list): cevap = str_to_list(cevap)
|
||||
|
||||
soru += 1
|
||||
print(f"puanın: {puan}<br/>{soru}) {başlık}<br/>$<p> </p>")
|
||||
js.window.scrollTo(0, js.document.body.scrollHeight)
|
||||
user_cevap = input() or 'n'
|
||||
|
||||
if user_cevap in cevap:
|
||||
print("afferim, doğru cevap! (+10 puan)")
|
||||
puan += 10
|
||||
return True
|
||||
elif user_cevap.casefold() in ["exit","çık","çıkış"]:
|
||||
print("oynadığın için teşekkür ederim, görüşürüz. 👋")
|
||||
exit(0)
|
||||
elif puan <= 0:
|
||||
print("üzgünüm, yanlış cevap.")
|
||||
return False
|
||||
else:
|
||||
print("üzgünüm, yanlış cevap (-5 puan)")
|
||||
puan -= 5
|
||||
return False
|
||||
|
||||
def oyunu_baslat():
|
||||
global bileşik_bitti,sembolik_bitti
|
||||
while True:
|
||||
js.window.scrollTo(0, js.document.body.scrollHeight)
|
||||
if len(sembolik_yaygın) <= 0: sembolik_bitti = True
|
||||
if len(bileşik_yaygın) <= 0: bileşik_bitti = True
|
||||
|
||||
if soru_türü == "random":
|
||||
random_int = ri(0,1)
|
||||
|
||||
if not bileşik_bitti and random_int == 0:
|
||||
sor = ri(0,len(bileşik_yaygın)-1)
|
||||
if tahmin(bileşik_yaygın[sor],bileşik[sor]):
|
||||
bileşik_yaygın.pop(sor)
|
||||
bileşik.pop(sor)
|
||||
|
||||
if not sembolik_bitti and random_int == 1:
|
||||
sor = ri(0,len(sembolik_yaygın)-1)
|
||||
if tahmin(sembolik_yaygın[sor],sembolik[sor]):
|
||||
sembolik_yaygın.pop(sor)
|
||||
sembolik.pop(sor)
|
||||
|
||||
if not bileşik_bitti and soru_türü == "bileşik":
|
||||
sor = ri(0,len(bileşik_yaygın)-1)
|
||||
if tahmin(bileşik_yaygın[sor],bileşik[sor]):
|
||||
bileşik_yaygın.pop(sor)
|
||||
bileşik.pop(sor)
|
||||
|
||||
if not sembolik_bitti and soru_türü == "sembolik":
|
||||
sor = ri(0,len(sembolik_yaygın)-1)
|
||||
if tahmin(sembolik_yaygın[sor],sembolik[sor]):
|
||||
sembolik_yaygın.pop(sor)
|
||||
sembolik.pop(sor)
|
||||
|
||||
if bileşik_bitti and sembolik_bitti:
|
||||
print(f"puanın: {puan}<br/>oyunu oynadığınız için teşekkürler, umarım ezberlemenizde yardımcı olmuşumdur ve umarım eğlenmişsinizdir.")
|
||||
exit(0)
|
||||
|
||||
if __name__ == '__main__':
|
||||
if sor:
|
||||
soru_turu_sor()
|
||||
soru_siralamasi_sor()
|
||||
init()
|
||||
|
||||
oyunu_baslat()
|
||||
</py-script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,2 @@
|
|||
this files downloaded from https://pyscript.net/
|
||||
github: https://github.com/pyscript/pyscript
|
|
@ -0,0 +1,244 @@
|
|||
:not(:defined) {
|
||||
display: none
|
||||
}
|
||||
|
||||
html{
|
||||
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.spinner::after {
|
||||
content: '';
|
||||
box-sizing: border-box;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
position: absolute;
|
||||
top: calc(40% - 20px);
|
||||
left: calc(50% - 20px);
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.spinner.smooth::after {
|
||||
border-top: 4px solid rgba(255, 255, 255, 1);
|
||||
border-left: 4px solid rgba(255, 255, 255, 1);
|
||||
border-right: 4px solid rgba(255, 255, 255, 0);
|
||||
animation: spinner 0.6s linear infinite;
|
||||
}
|
||||
@keyframes spinner {
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.label {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
display: block;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
font-size: 0.8rem;
|
||||
margin-top: 6rem;
|
||||
}
|
||||
|
||||
/* Pop-up second layer begin */
|
||||
|
||||
.py-overlay {
|
||||
position: fixed;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: white;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
transition: opacity 500ms;
|
||||
visibility: hidden;
|
||||
color: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.py-overlay {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.py-pop-up {
|
||||
text-align: center;
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.py-pop-up p {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.py-pop-up a {
|
||||
position: absolute;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
font-size: 200%;
|
||||
top: 3.5%;
|
||||
right: 5%;
|
||||
}
|
||||
|
||||
.py-box{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.py-box div.py-box-child *
|
||||
{
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.py-repl-box{
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.editor-box{
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgba(209, 213, 219, var(--tw-border-opacity));
|
||||
border-width: 1px;
|
||||
position: relative;
|
||||
--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
|
||||
--tw-ring-offset-width: 0px;
|
||||
--tw-ring-offset-color: #fff;
|
||||
--tw-ring-color: rgba(59, 130, 246, 0.5);
|
||||
--tw-ring-offset-shadow: 0 0 #0000;
|
||||
--tw-ring-shadow: 0 0 #0000;
|
||||
--tw-shadow: 0 0 #0000;
|
||||
position: relative;
|
||||
|
||||
box-sizing: border-box;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: rgb(209, 213, 219)
|
||||
}
|
||||
|
||||
.editor-box:hover button{
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.repl-play-button{
|
||||
opacity: 0;
|
||||
bottom: 0.25rem;
|
||||
right: 0.25rem;
|
||||
position: absolute;
|
||||
padding: 0;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
cursor: pointer;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
-webkit-appearance: button;
|
||||
text-transform: none;
|
||||
font-family: inherit;
|
||||
font-size: 100%;
|
||||
margin: 0;
|
||||
text-rendering: auto;
|
||||
letter-spacing: normal;
|
||||
word-spacing: normal;
|
||||
line-height: normal;
|
||||
text-transform: none;
|
||||
text-indent: 0px;
|
||||
text-shadow: none;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
align-items: flex-start;
|
||||
cursor: default;
|
||||
box-sizing: border-box;
|
||||
background-color: -internal-light-dark(rgb(239, 239, 239), rgb(59, 59, 59));
|
||||
margin: 0em;
|
||||
padding: 1px 6px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.repl-play-button:hover{
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.py-title{
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.py-title h1{
|
||||
font-weight: 700;
|
||||
font-size: 1.875rem;
|
||||
}
|
||||
|
||||
.py-input{
|
||||
padding: 0.5rem;
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgba(209, 213, 219, var(--tw-border-opacity));
|
||||
border-width: 1px;
|
||||
border-radius: 0.25rem;
|
||||
margin-right: 0.75rem;
|
||||
border-style: solid;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.py-box input.py-input{
|
||||
width: -webkit-fill-available;
|
||||
}
|
||||
|
||||
.central-content{
|
||||
max-width: 20rem;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
input {
|
||||
text-rendering: auto;
|
||||
color: -internal-light-dark(black, white);
|
||||
letter-spacing: normal;
|
||||
word-spacing: normal;
|
||||
line-height: normal;
|
||||
text-transform: none;
|
||||
text-indent: 0px;
|
||||
text-shadow: none;
|
||||
display: inline-block;
|
||||
text-align: start;
|
||||
appearance: auto;
|
||||
-webkit-rtl-ordering: logical;
|
||||
cursor: text;
|
||||
background-color: -internal-light-dark(rgb(255, 255, 255), rgb(59, 59, 59));
|
||||
margin: 0em;
|
||||
padding: 1px 2px;
|
||||
border-width: 2px;
|
||||
border-style: inset;
|
||||
border-color: -internal-light-dark(rgb(118, 118, 118), rgb(133, 133, 133));
|
||||
border-image: initial;
|
||||
}
|
||||
|
||||
.py-button{
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(255, 255, 255, var(--tw-text-opacity));
|
||||
padding: 0.5rem;
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgba(37, 99, 235, var(--tw-bg-opacity));
|
||||
--tw-border-opacity: 1;
|
||||
border-color: rgba(37, 99, 235, var(--tw-border-opacity));
|
||||
border-width: 1px;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.py-li-element p{
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.py-li-element p{
|
||||
display: inline;
|
||||
}
|
||||
|
||||
button, input, optgroup, select, textarea {
|
||||
font-family: inherit;
|
||||
font-size: 100%;
|
||||
line-height: 1.15;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.line-through {
|
||||
text-decoration: line-through;
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue