Jojoxx.net

 

 

AnvändareAnvändare
Besökare just nu: 46
SnabblänkarSnabblänkar
JavaScript-arkivet
Perl
FAQ
Sök på Jojoxx.netSök på Jojoxx.net



Chatrobot

Exempel


Kod


<form onsubmit="this.chat.value='>'+this.say.value+'\n'+this.chat.value; interpret(this.say.value); forceAnswer(this.chat); this.say.value=''; this.say.focus(); return false;">
<script type="text/javascript">
// http://en.wikipedia.org/wiki/ELIZA

var me=new Object();
me.name="Eliza";
me.happiness=0;
me.chattingWith="";
var randomReplies=new Array("Vad vill du prata om?","Jag förstår inte");
reply=new Array();
Array.prototype.push=function(str){
	this[this.length]=str; return this.length;
}
function interpret(str){
	var arr=str.match(/(.*?[\!\.\?]+)/ig); if(!arr){ arr=new Array(str); }
	arr=arr.sort(function(a,b){ return (!!a.match(/[\?]$/)?1:-1); } )
	for(var i=0;i<arr.length;i++){ interpretSentence(arr[i]); }
}
function interpretSentence(str){
	isQuestion=!!str.match(/\?$/);
	wordcount=str.split(/ /).length;
	if(isQuestion){
		if(str.match(/heter/i)&&str.match(/du/i)||str.match(/ditt/i)&&str.match(/namn/i)){ reply.push("Jag heter "+me.name+"."); }
		if(str.match(/gammal/i)&&str.match(/du/i)){ reply.push("Min ålder är inte så viktig."); }
		if(str.match(/hur/i)&&str.match(/många/i)&&str.match(/ord/i)){ reply.push("Din mening innehöll "+wordcount+" ord."); }
		if(str.match(/väder|vädret/i)){ reply.push("Det är fint väder idag... tror jag."); }
		if(str.match(/hur mår du|hur är (det|läget)/i)){ reply.push("Jag mår bra tack."); }
		if(reply.length==0){ reply.push("Jag vet faktist inte. Vad tror du?"); }
	} else {
		if(str.match(/(jag heter|mitt namn är)\s+(\w+)/i)){ me.chattingWith=RegExp.$2; }
		if(str.match(/du|dig/i)){ reply.push("Jag tycker vi pratar om dig istället "+me.chattingWith+"."); }
		if(str.match(/hej|tja/i)){ reply.push("Hej på dig "+me.chattingWith+"."); }
		if(wordcount<3 && !reply){ reply.push(randomFromArray(["Säger du det så...","Ok."])); }
	}
}
function forceAnswer(obj){
	if(reply.length==0){ reply.push(randomFromArray(randomReplies)); }
	obj.value=reply.join(" ")+"\n"+obj.value;
	reply=new Array();
}
function randomFromArray(arr){
	return arr[Math.floor(Math.random()*arr.length)]
}
</script>
<textarea name="chat" style="width:320px;height:200px;"></textarea> <img src="http://www.jojoxx.net/jscript/archive/chatrobot.jpg"> <br>
<input name="say" type="text" style="width:440px;"> <input type="submit" style="width:0px;">
</form>

,